首页
学习
活动
专区
工具
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‘), ) 每个元组中的第一个元素,是存储在数据库中的值;第二个元素是在管理界面或

    79640

    37.Django1.11.6文档

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

    24.4K80

    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_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

    35.Django2.0文档

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

    11.3K100

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

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

    3.2K21

    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:一对一,将字段定义在任意一端中

    15310

    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 之 Models(Models 模型 & 数据表关系)

    之路由篇 Django 之视图篇 Django 之模板篇 Models 模型 ORM --- ObjectRelationMap: 把面向对象思想转换成关系数据库思想,操作上把类等价于表格 类对应表格 类中的属性对应表中的字段...在应用中的models.py 文件中定义class 所有需要使用ORM的class都必须是 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.4K87

    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.3K20

    数据通信网络之使用 eNSP 组网

    将光标移到工作区,光标变为选中的设备型号,单击鼠标,完成 型号为 AR1220 设备的放置过程,如图 3 所示。 备注:如果需要放置多个该型号的设备,可以通过重复多次相同操作完成。...如果需要放置其 他型号的设备,可以重新在设备类型选择框中选中新的设备类型,在设备选择框中选中新的 设备型号。如果不再放置设备,可以单击工具栏中的“恢复鼠标”按钮。...①PC1 ping AR1 GE0/0/0:双击计算机 PC1 图标,弹出设备配置管理窗口。单击“命令行” 选项卡,打开命令提示符界面。...以联通性测试为例,双击计算机 PC1 图标,弹出设备配置管理窗口。单击“命令行”选项卡,打开命令提示符界面。...给出双字节以太网帧类型字段的十六进制值。这对应于什么上层协议? 答:0x0806 ARP协议 c. 包含 ARP 请求消息的以太网帧中是否包含填充字段? 答:如图15所示,包含填充字段。

    77920

    Django ORM详解

    ORM:(在django中,根据代码中的类自动生成数据库的表也叫--code first) ORM:Object Relational Mapping(关系对象映射) 我们写的类表示数据库中的表 我们根据这个类创建的对象是数据库表里的一行数据...比如我们在建立用户的时候有个菜单让我们选择用户类型的时候,使用一对多!!...1、一对多的正向查找: 正向查:ForeignKey在UserInfo表里,如果根据UserInfo这张表去查询这两张关联的表的合起来的内容就是正向查 反向查:ForeignKey不在UserType里...表中的所有字段 我们要查询所有用户为CEO的用户,我们是不是的根据UserType这张表去查,如果是跨表查询使用“双下划线” + 属性 ?...__跨表的字段     line.自动创建和表明相同的对象_set.方法 ?

    1.8K100
    领券