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

Django:在模型上默认过滤外键对象

Django是一个基于Python的开源Web应用框架,它提供了一套完整的开发工具和功能,用于快速构建高质量的Web应用程序。在Django中,模型是用于定义数据结构的核心组件之一。

在模型上默认过滤外键对象是指在Django的模型定义中,可以通过设置相关字段的属性来实现对外键对象的默认过滤。具体而言,可以使用limit_choices_to属性来指定外键对象的过滤条件,从而限制可选的外键对象。

下面是一个示例模型定义,展示了如何在Django中默认过滤外键对象:

代码语言:txt
复制
from django.db import models

class Category(models.Model):
    name = models.CharField(max_length=100)

class Product(models.Model):
    name = models.CharField(max_length=100)
    category = models.ForeignKey(Category, on_delete=models.CASCADE, limit_choices_to={'name__startswith': 'A'})

在上述示例中,Product模型定义了一个名为category的外键字段,它指向Category模型。通过设置limit_choices_to属性为{'name__startswith': 'A'},我们可以实现默认过滤,只允许选择name以字母'A'开头的Category对象作为外键。

这样,当我们在Django的管理界面或者使用Django的表单进行数据输入时,只会显示符合过滤条件的Category对象作为外键选项。

推荐的腾讯云相关产品和产品介绍链接地址:

  • 腾讯云云服务器(CVM):https://cloud.tencent.com/product/cvm
  • 腾讯云云数据库 MySQL 版:https://cloud.tencent.com/product/cdb_mysql
  • 腾讯云对象存储(COS):https://cloud.tencent.com/product/cos
  • 腾讯云人工智能:https://cloud.tencent.com/product/ai
  • 腾讯云物联网通信(IoT Hub):https://cloud.tencent.com/product/iothub
  • 腾讯云移动推送(TPNS):https://cloud.tencent.com/product/tpns
页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

django开发中取消约束的实现

# setting设置 'OPTIONS': { "init_command": "SET foreign_key_checks = 0;", } 补充知识:django-给关系传值...,删除外关系 反查: 表关系里 related_name = ‘反查name’,自己不设置,django也会默认设置为class的小写名字+_set , ex: book_set....''' 两种方法 教室ClassRoom和教室编号ClassNumber 字段django类里名(room_number)在数据库名(room_number_id) '''      # 一.1...赋值对象字段 # room_number = ClassNumber.objects.filter(class_number__exact='003')[0] # d对List切片 # c...字段django类里名(room_number)在数据库名(room_number_id)      c.save() return HttpResponse("ojbk") 多对一: 类似一对一

3.6K10

django模型中有关系的表删除相关设置

0904自我总结 django模型中有关系的表删除相关设置 一.一对一 例如有Author、AuthorDetail两表 author = models.OneToOneField(to='Author...,书删除没有任何影响 2)出版社找书用 related_name(books),书找出版社 字段(publish) 3)db_constraint断开表关联,on_delete规定逻辑关联删除动作..., null=True, 2)断关联,删除关联表记录,键值置默认值 db_constraint=False, on_delete=models.SET_DEFAULT, default=1, 注意:...on_delete必须声明models.DO_NOTHING为删除级联关系, models.CASCAD为级联关系,'SET_NULL'置空,SET_DEFAULT设为默认值 两者区别 models.SET...,反向找 字段related_name 3)db_constraint断开表关联,on_delete不存在(不设置,本质第三张表中设置,且一定是级联)

3K20

Django框架学习(三)

Django中: 1、设置模板目录 工程中创建模板目录templates。...a) jinja2模板过滤器使用: {{ 模板变量 | 过滤器(参数...)}} b) Django中模板过滤器的使用: {{ 模板变量 | 过滤器:参数 }} 注意:Django过滤器:号之后只能接收一个参数...4.数据库 ORM框架: 作用:将模型类和数据表进行对应,通过面向对象的方式进行数据库的操作。 flask中SQLALchemy Django中自带ORM框架,可以直接进行使用。...AutoField的选项使用 unique 如果为True, 这个字段表中必须有唯一值,默认值是False 设置时,需要通过on_delete选项指明主表删除数据时,对于引用表数据如何处理...,django.db.models中包含了可选常量: CASCADE 级联,删除主表数据时连通一起删除外表中数据 PROTECT 保护,通过抛出ProtectedError异常,来阻止删除主表中被应用的数据

1.8K40

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

2.1 ForeignKey 1) on_delete Django 2.0 中,设置时需要添加一个 on_delete选项。本身涉及到两个表的数据,况且在数据库中是有约束行为。...SET_DEFAULT: 置默认值,删除的时候,字段设置为默认值,所以定义的时候注意加上一个默认值。 SET(): 自定义对应的实体的值。...2)limit_choices_to 该参数用于限制所能关联的对象,只能用于 Django 的 ModelForm(Django的表单模块)和 admin 后台,对其它场合无限制功能。...4) related_name 用于关联对象反向引用模型的名称。主要用于反向查询,即模型实例通过管理器返回第一个模型的所有实例。...用于从目标模型反向过滤模型对象的名称。

2K30

Django相关知识点回顾

3.MVT模式(Model模型、View视图、Template模板) 5.URL配置 Django默认url配置风格是末尾加 /,子应用中进行url地址配置的时候,建议严格匹配开头和结尾。...a) Jinja2模板过滤器使用 {{ 模板变量|过滤器(参数...)}} b) Django中模板过滤器的使用 {{ 模板变量|过滤器:参数 }} 注意:Django过滤器 :之后只能接收一个参数...class Meta: db_table = '' 定义属性: # 表中外字段名格式: hbook = models.ForeignKey('BookInfo...排序: 排序默认是升序,降序排序字段前加- 使用order_by 关联查询: 1.查询和指定对象关联的数据 # 由1查多 一对象.多类名小写_set.all() 例:book.heroinfo_set.all...() # 由多查1 多对象.属性 例:hero.hbook 2.通过模型类进行关联查询 # 查图书(一) 一类.objects.get|filter(多类名__字段__条件=值) 例:books =

10K51

Django 1.10中文文档-第一个应用Part7-自定义管理站点

你可以注册时通过配置来实现。 现在先来试试重新排序表单的字段。...Djangoadmin站点中,自动地将所有的关系展示为一个select框。我们的例子中,目前只有一个question对象存在。 请注意图中的绿色加号,它连接到Question模型。...每一个包含关系的对象都会有这个绿色加号。点击它,会弹出一个新增Question的表单,类似Question自己的添加表单。...填入相关信息点击保存后,Django自动将该Question保存在数据库,并作为当前Choice的关联对象。通俗讲就是,新建一个Question并作为当前Choice的。...:Choice对象将在Question管理页面进行编辑,默认情况,请提供3个Choice对象的编辑区域。

3.6K60

Django3.2边学边记—Adimn站点管理

准备工作 创建管理员的用户名和密码:  1 python manage.py createsuperuser   根据提示创建用户名 密码 admin.py中注册模型类 1234567 from django.contrib...TestAdmin(admin.ModelAdmin):    list_per_page = 20 操作选项的位置   由action_on_bottom 和action_on_top两属性来控制 默认显示顶部...,默认值分别为:False 和 True,改为只显示底部: 1234 class TestAdmin(admin.ModelAdmin):    list_per_page = 20    actions_on_bottom...控制显示的列,Django 会尝试按照这个顺序解释 list_display 的每个元素: 一个模型的字段。 一个可调用对象。 一个代表 ModelAdmin 属性的字符串。...,如下截图所示: list_filter 应是一个列表或元组,参数字段可以是模型字段,包括字段(注意list_display是不能直接接收字段的),会将对应字段的值列出来,一般用于快速过滤有重复值的字段

1.3K30

Django 模型查询2.3

查询集 字段查询:比较运算符,F对象,Q对象 查询集 管理器上调用过滤器方法会返回查询集 查询集经过过滤器筛选后返回新的查询集,因此可以写成链式过滤 惰性执行:创建查询集不会带来任何数据库的访问...,使用“属性名_id”表示的原始值 转义:like语句中使用了%与,匹配数据中的%与,在过滤器中直接写,例如:filter(title__contains="%")=>where title like...')) django支持对F()对象使用算数运算 list.filter(bread__gte=F('bcommet') * 2) F()对象中还可以写作“模型类__列名”进行关联查询 list.filter...过滤器的方法中关键字参数查询,会合并为And进行 需要进行or查询,使用Q()对象 Q对象(django.db.models.Q)用于封装一组关键字参数,这些关键字参数与“比较运算符”中的相同 from...(not)操作符Q对象前表示取反 list.filter(~Q(pk__lt=6)) 可以使用&|~结合括号进行分组,构造做生意复杂的Q对象 过滤器函数可以传递一个或多个Q对象作为位置参数,如果有多个

2.3K20

django_2

要求 修改数据库 Django shell 数据级联(一对多) 元信息 定义字段 模型过滤 创建对象4种方式 查询集 过滤器 获取单个对象 字段查询 时间 聚合函数 跨关系查询 F对象 Q对象...dept 部门表:主表 emp 员工表:从表 两张中有级联关系 带主键的表是主表 带的表是从表 关联关系放在从表 (团员找班长--> 快) sql的优化 一对多模型关系: class Grade...,确保它是个有效的image 两个字段依赖pillow 字段选项 ·概述 ·通过字段选项,可以实现对字段的约束 ·字段对象时通过关键字参数指定 ·null ·如果为...·访问id ·格式 ·对象.属性_id ·示例 ·student.sgrade_id 6.模型过滤(查询) Django默认通过模型的objects对象实现模型数据查询...__属性名__比较运算符,实际就是处理的数据库中的join Grade ---g_name Student---》s_name s_grade() gf

3.6K30

后端框架学习-Django

models.PROTECT:保护删除,等同于mysql默认的RESTRICT SET_NULL:保留关联数据,设置为NULL SET_DEFAULT:将设置为默认值。...创建一对一数据 无模型类,和之前相同 有模型类: wife = Wife.objects.create(name=’王夫人’,author = author1(类属性名称绑实例...)) wife = Wife.objects.create(name=’王夫人’,author_id = 1(类属性字段绑值)) 一对一查询 正向查询:从对象 反向查询:从对象 调用反向属性查询到关联的一方...一对多查询 核心:正向属性(authors)和反向属性(book_set) 多表设置,关联一表。...无模型类,和之前相同 有模型类: 类似上面 wife = Wife.objects.create(name=’王夫人’,author = author1(类属性名称绑实例)

9.3K40

django后台管理-admin

0922自我总结 django后台管理-admin 一.模型注册 admin.py 注册方式一: #在对于注册的app中的admin文件中导入模型然后注册模型 admin.site.register(导入的模型类...) 注册方式二该方法是Django1.7的版本新增的功能: from django.contrib import admin from blog.models import Blog #Blog模型的管理器...#listdisplay设置要显示列表中的字段(id字段是Django模型默认主键) list_display = ('id', 'caption', 'author', 'publish_time...', 'temperature'] #fk_fields 设置显示字段 fk_fields = ('machine_room_id',) 2、筛选器 from django.contrib...一般ManyToManyField多对多字段用过滤器;标题等文本字段用搜索框;日期时间用分层筛选。 过滤器如果是需要遵循这样的语法:本表字段__表要显示的字段。

84110

django 1.8 官方文档翻译: 2-5-4 聚合 (初稿)

然而,你有时候会想要获取从一组对象导出的值或者是聚合一组对象。这份指南描述了通过Django查询来生成和返回聚合值的方法。 整篇指南我们都将引用以下模型。这些模型用来记录多个网上书店的库存。...聚合函式中指定聚合字段时,Django 允许你使用同样的 双下划线 表示关联关系,然后 Django 就会处理要读取的关联表,并得到关联对象的聚合。...例如,我们可以查询所有出版商,并注上它们一共出了多少本书(注意我们如何用 ‘book’指定Publisher -> Book 的反转关系): >>> from django.db.models import...第一个查询中,注解在过滤器之前,所以过滤器对注解没有影响。 第二个查询中,过滤注解之前,所以,计算注解值时,过滤器就限制了参与运算的对象的范围。...与默认排序或order_by()交互 查询集中的order_by() 部分(或是模型默认定义的排序项) 会在选择输出数据时被用到,即使这些字段没有values() 调用中被指定。

1.6K30

django 引用自身和on_delete参数

模型使用引用自己本身。...如果的那条数据被删除了,那么本条数据就将这个字段设置为空。如果设置这个选项,前提是要指定这个字段可以为空。 SET_DEFAULT:设置默认值。...如果的那条数据被删除了,那么本条数据就将这个字段设置为默认值。如果设置这个选项,== 前提是要指定这个字段一个默认值 ==。 SET():如果的那条数据被删除了。...、update的时候,子表会将关联记录的字段所在列设为null,所以注意在设计子表时不能设为not null; 为什么django中可以是用不同的约束去操作数据库呢。...进行删除A表数据时,发现被约束着,使数据不能被删除,则django会先去删除约束的B表数据,然后再来删除A表数据。

1.3K20

Django 3.1 官网学习路线

字段还可以有各种可选参数;本例中,我们将投票的默认值设置为 0。 最后,请注意使用定义了关系。这告诉 Django 每个选择都与一个问题相关。...按照惯例,Django 会将"_id"附加到外字段名。(是的,你也可以重写这个。) 关系是通过约束来显式的。...不要担心可延期的部分;它告诉 PostgreSQL 事务结束之前不要强制执行。...它没有显示管理索引页。 还有一件事要做:我们需要告诉管理员 Question 对象有一个管理接口。...“添加选择”表单如下所示: 该表单中,“Question”字段是一个选择框,包含数据库中的每个问题。Django 知道一个应该在管理中表示为一个框。我们的例子中,目前只存在一个问题。

8.1K10

django 1.8 官方文档翻译: 2-6-4 数据库访问优化

在数据库中而不是Python中做数据库的工作 比如: 最基础的层面上,使用过滤器和反向过滤器对数据库进行过滤。 使用F 表达式相同模型中基于其他字段进行过滤。 使用数据库中的注解和聚合。..., 以及适当的管理器和默认管理器中。...对于模板代码中替换模型对象,这样会非常有用 —— 只要字典中带有的属性和模板中使用的一致,就没问题。...直接使用的值 如果你仅仅需要当中的一个值,要使用对象你已经取得的的值,而不是获取整个关联对象再得到它的主键。...如果一个模型具有默认的顺序(Meta.ordering),并且你并不需要它,通过查询集无参调用order_by() 来移除它。 向你的数据库添加索引可能有助于提升排序性能。

1.1K30
领券