首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

是否根据相同型号ForeignKey字段中的选择过滤管理窗体中的ManytoMany选项?

是的,可以根据相同型号ForeignKey字段中的选择过滤管理窗体中的ManyToMany选项。

在Django中,可以使用limit_choices_to参数来实现这个功能。limit_choices_to参数允许我们指定一个查询表达式,用于过滤ManyToMany字段的可选项。

具体步骤如下:

  1. 在定义ManyToMany字段的模型中,使用limit_choices_to参数来指定过滤条件。例如,假设有一个Product模型,其中有一个ManyToMany字段related_products,我们想根据相同型号过滤可选项,可以这样定义字段:related_products = models.ManyToManyField(Product, limit_choices_to={'型号': self.型号})
  2. 在管理窗体中,使用formfield_for_manytomany方法来自定义ManyToMany字段的表单字段。在该方法中,可以通过instance参数获取当前对象的属性值,进而根据属性值来动态设置limit_choices_to参数。例如,可以这样实现该方法:
代码语言:txt
复制
def formfield_for_manytomany(self, db_field, request, **kwargs):
    if db_field.name == 'related_products':
        kwargs['queryset'] = Product.objects.filter(型号=self.instance.型号)
    return super().formfield_for_manytomany(db_field, request, **kwargs)

这样,当我们在管理窗体中编辑对象时,ManyToMany字段的可选项将会根据相同型号进行过滤。

推荐的腾讯云相关产品:腾讯云数据库MySQL、腾讯云云服务器CVM、腾讯云对象存储COS。

腾讯云数据库MySQL:提供高性能、高可用的云数据库服务,适用于各种规模的应用场景。详情请参考:腾讯云数据库MySQL

腾讯云云服务器CVM:提供弹性计算能力,可快速创建、部署和扩展云服务器。详情请参考:腾讯云云服务器CVM

腾讯云对象存储COS:提供安全、稳定、低成本的云端存储服务,适用于海量数据存储和访问。详情请参考:腾讯云对象存储COS

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

  • django orm 重点大全

    c1=models.ForeignKey(User_typ) #cc表符合aa表a==‘xx’记录列表 obj_list=cc.objects.filter(c1__b1__a='xx')  3....书、出版社、作者,三者之间互相查来查去 1.建立这四个表 #一对一 OneToOne(表名) #一对多 ForeignKey(表名) #多对多 ManyToMany(表名) #建立书表...(4)unique 如果该值设置为 True, 这个数据字段值在整张表必须是唯一 (5)choices 由二元组组成一个可迭代对象(例如,列表或元组),用来给字段提供选择项。...如果设置了choices , 默认表单将是一个选择框而不是标准文本框,而且这个选择选项就是choices 选项。...(‘JR‘, ‘Junior‘), (‘SR‘, ‘Senior‘), (‘GR‘, ‘Graduate‘), ) 每个元组第一个元素,是存储在数据库值;第二个元素是在管理界面或

    79240

    37.Django1.11.6文档

    窗体缺少字段(例如因为它们已被排除)时,这些字段不会由save()方法设置。 您可以在选择要使用字段中找到有关此限制更多信息,这也适用于常规ModelForms。...但是,当选择多个时多选框非常难用. 添加一个 ManyToManyField到该列表将使用一个漂亮低调JavaScript过滤器”界面,允许搜索选项。 选和不选选项框并排出现。 ...列表过滤器通常仅在过滤器有多个选择时才会出现。 过滤has_output()方法控制是否显示。...方法类似,可以覆盖formfield_for_foreignkey方法更改已声明选择字段默认窗体字段。 ...如果您查看管理任何更改列表,您将看到此功能在操作; Django附带所有型号“删除所选对象”操作。

    24.3K80

    django 1.8 官方文档翻译: 2-5-6 多数据库

    该设置映射数据库别名到一个数据库连接设置字典,这是整个Django 引用一个数据库方式。字典设置在 DATABASES 文档中有完整描述。 你可以为数据库选择任何别名。...使用其它管理命令 其它django-admin 命令与数据库交互方式与migrate相同 —— 它们都一次只操作一个数据库,并使用--database来控制使用数据库。...这是纯粹验证操作,外键和多对多操作使用它来决定两个对象之间是否应该允许一个关联。...选择一个数据库用于删除表单 默认情况下,删除一个已存在对象调用将在与获取对象时使用相同数据库上执行: >>> u = User.objects.using('legacy_users').get(username...,只要给出合适路由 auth模型 —— User、Group和Permission —— 关联在一起并与ContentType关联,所以它们必须与ContentType存储在相同数据库

    1.5K20

    基于Django OneToOneField和ForeignKey区别详解

    ,再删除此字段信息时候同时删除包含ForeignKey字段目标(object) PROTECT 通过django.db.IntegrityErrorProtectedError来保护此字段不被删除...通过一个限制对字段信息某一可能选项进行约束,可以通过字典,函数或者查询值来设置 related_name 可以指定关联类在本类名称,通过这一参数可以用两个字段名引用同一个类,通过这个名称父类可以取得子类值...,默认为字段名 related_query_name 用于filter函数过滤和values函数 to_field 关系关联相关对象名称 db_constraint 控制在数据库是否应该建立这一字段约束...ManyToManyField还有以下参数可以选择: 参数 功能 related_name 同ForeignKey,可以指定关联类在本类名称 related_query_name 同ForeignKey...,若不设置则默认为字段名称 db_contraint 是否在数据库建立约束 swappable 设置是否指向一个可交换模型 OneToOneField 源码对OneToOneField设置如下

    2.5K20

    django_2

    :max_length,default,unique,index,primary_key,db_column 模型属性类型 定义属性 概述 ·django根据属性类型确定以下信息 ·当前选择数据库支持字段类型...·渲染管理表单时使用默认html控件 ·在管理站点最低限度验证 ·django会为表增加自动增长主键列,每个模型只能有一个主键列, 如果使用选项设置某属性为主键列后,..., 这个字段在表必须有唯一值 关系 ·分类 ·ForeignKey:一对多,将字段定义在多 ·ManyToManyField:多对多,将字段定义在两端 ·OneToOneField...,queryset没有save属性,获取所有数据 概述 ·django根据属性类型确定以下信息 ·当前选择数据库支持字段类型 ·渲染管理表单时使用默认html控件...·unique ·如果为 True, 这个字段在表必须有唯一值 关系 ·分类 ·ForeignKey:一对多,将字段定义在多 ·ManyToManyField

    3.6K30

    Django 学习笔记之模型高级用法(上)

    除了需要在 seeting.py 增加相关配置,还都拥有共同 upload_to 字段选项。 它还有额外可选参数:一个是 height_field,表示保存图片高度。...2.1 ForeignKey 1) on_delete 在 Django 2.0 ,设置外键时需要添加一个 on_delete选项。外键本身涉及到两个表数据,况且外键在数据库是有约束行为。...用于从目标模型反向过滤模型对象名称。...editable:设置该字段是否能被编辑,默认是 True。如果设为 False , 这个字段将不会出现在 admin 或者其他 ModelForm 。 同时也会跳过 模型验证 。...如果用户没有定义该选项, Django会自动将自动创建,内容是该字段属性名下划线转换为空格结果。

    2K30

    Excel应用实践13:制作产品选型表,在用户窗体实现级联下拉列表

    学习Excel技术,关注微信公众号: excelperfect 在网站,我们经常会碰到需要一层层向下选择情况。在第一个选项列表中选择第一个数据,第二个选项列表中选择第二个数据,依此类推。...并且,后面的选项列表内容会根据前面选择内容而发生变化。如下图1所示。 ? 图1 上图1是使用Excel VBA用户窗体实现效果,实现起来很简单。 首先,准备数据,如下图2所示。...第1列单元格值分别是该列下方数据单元格区域名称,这需要我们事先使用名称功能进行定义。 ? 图2 接着,设计用户窗体,如下图3所示。...2个组合框值 '在第3个组合框添加值 Case "型号11" cmbSubModel.List =Application.WorksheetFunction.Transpose...你可以根据实际情况,添加功能,譬如选择好后,将选择数据输入用户信息工作表或者导向到相应产品页面。 代码图片版如下: ?

    3K21

    35.Django2.0文档

    在这个模式, Model 代表数据存取层,View 代表是系统中选择显示什么和怎么显示部分,Controller 指的是系统根据用户输入并视需要访问模型,以决定使用哪个视图那部分。      ...我们可以对任意字段进行排序,如果需要以多个字段为标准进行排序(第二个字段会在第一个字段相同情况下被使用到),使用多个参数就可以了,如下: ?...如果你想选择多项,你必须还要按下Ctrl键。 虽然管理工具因此添加了注释(help_text),但是当它有几百个选项时,它依然显得笨拙。 更好办法是使用 filter_horizontal。...filter_horizontal和filter_vertical选项只能用在多对多字段上, 而不能用于ForeignKey字段。 默认地,管理工具使用`` 下拉框`` 来展现`` 外键`` 字段。...普通活跃,非超级用户管理用户可以根据一套设定好许可进入。 管理界面每种可编辑对象(如:books、authors、publishers)都有三种权限:创建许可,编辑许可和删除许可。

    11.3K100

    Django模型model

    根据对象类型生成数据库表结构 将对象、列表操作,转换为sql语句 将sql查询到结果转换为对象、列表 Django模型包含存储数据字段和约束,对应着数据库唯一表 ORM.png 2....定义模型类 在模型定义属性,会生成数据库表字段 django根据属性类型确定以下信息: 当前选择数据库支持字段类型 渲染管理表单时使用默认html控件 在管理站点最低限度验证 django...AutoField:一个根据实际ID自动增长IntegerField,通常不指定 如果不指定,一个主键字段将自动添加到模型 BooleanField:true/false 字段,此字段默认表单控制是...模型类字段选项 通过字段选项,可以实现对字段约束 在字段对象时通过关键字参数指定 null:如果为True,Django 将空值以NULL 存储到数据库,默认值是 False blank:如果为True...模型类之间关系 关系类型包括 ForeignKey:一对多,将字段定义在多 ManyToManyField:多对多,将字段定义在两端 OneToOneField:一对一,将字段定义在任意一端

    14010

    Django—模型

    : 当前选择数据库支持字段类型 渲染管理表单时使用默认html控件 在管理站点最低限度验证 django会为表创建自动增长主键列,每个模型只能有一个主键列,如果使用选项设置某属性为主键列后...定义属性时需要指定字段类型,通过字段类型参数指定选项,语法如下: 属性=models.字段类型(选项) 字段类型 使用时需要引入django.db.models包,字段类型如下: AutoField...选项 通过选项实现对字段约束,选项如下: null:如果为True,表示允许为空,默认值是False。 blank:如果为True,则该字段允许为空白,默认值是False。...,但通过后台管理页面添加英雄信息时hcomment对应输入框不能为空 hbook = models.ForeignKey('BookInfo')#英雄与图书表关系为一对多,所以属性定义在英雄模型类...(queryset) View Code 上去 5.模型类关系 关系字段类型 关系型数据库关系包括三种类型: ForeignKey:一对多,将字段定义在多一端

    6.1K21

    基于 Django 手机管理系统

    二、设计数据库 根据业务需求,设计数据表,需要下列这些属性: 手机型号、品牌、手机描述、出厂年份、价格、照片、产地。...根据数据表设计原则,数据表设计需要满足基本函数依赖和范式要求,因此我们将上述属性拆分为四张表格,并建立这些数据表之间联系,相关E-R 图如图所示: (由于 Django 在建立每一个数据表时候就会有一个内建...此数据库字段由于是我从 sqlite 迁移到 MySQL ,Django 自动帮我再生成字段,所以有些字段名和我在 Django 写字段不一致,但数据表关系还是一致。...网站管理员登录界面: ? 管理增删改查界面: ?...四、总结 至此,一个简单 手机管理系统就被我们实现出来了(Django + Bootstrap + MySQL),当然其中还存在很多不足,比如没有实现普通用户登录功能,HTML 页面写也比较简陋

    1.6K40

    Django之Model世界

    _连接起来) 3、创建外键时候 models.ForeignKey(UserType)  ForeignKey参数代表类必须在其上面,否则就必须写成字符串形式 from django.db import...admin 用一个选择框 (三个可选择值: "Unknown", "Yes" 和 "No" ) 来表示这种字段数据...., 它是一个用来校验文本 RelaxNG schema 文件系统路径. 1、null=True   数据库字段是否可以为空 2、blank=True   django Admin 添加数据时是否可允许空值...' 2、连表结构(当我们在类写上这样字段后,就会为我们自动创建一张关系表) 一对多: models.ForeignKey(其他表) 一对多: 就是主外键关系 多对多: models.ManyToManyField...表user,所以应该user数据全部显示,而'user_type__caption'即另一张表数据根据user对应值进行显示 一对多之正向查找通过UserInfo表查找UserType内容

    2.2K20

    Django 之 Models(Models 模型 & 数据表关系)

    之路由篇 Django 之视图篇 Django 之模板篇 Models 模型 ORM --- ObjectRelationMap: 把面向对象思想转换成关系数据库思想,操作上把类等价于表格 类对应表格 类属性对应表字段...在应用models.py 文件定义class 所有需要使用ORMclass都必须是 models.Model 子类 class 所有属性对应表格字段 字段类型都必须使用 modles.xxx...ORM class都必须是models.Models 子类 class所有属性对应表格字段 字段类型都需使用 models.xxx 不能使用python 类型 字段常用参数 --- max_length...: 规定数值最大长度undefined blank: 是否允许字段为空,默认不允许 null: 在DB控制是否保存为null,默认为False default: 默认值 unique: 唯一 verbose_name...使用ForeignKey 在多那一边,比如上边例子就是在Teacher表格里进行定义 add 跟一对一方法类似,通过create和new来添加 create:把属性都填满,然后不需要手动保存

    2.3K87
    领券