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

Django如何根据其他形式选择的父外键对外键进行过滤?

Django是一个基于Python的开源Web应用框架,它提供了一种高效、灵活和安全的方式来构建Web应用程序。在Django中,我们可以使用外键来建立模型之间的关系。当我们需要根据其他形式选择的父外键对外键进行过滤时,可以使用Django的查询表达式和过滤器来实现。

首先,我们需要定义模型并设置外键关系。假设我们有两个模型:Parent和Child,Child模型有一个外键指向Parent模型。

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

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

class Child(models.Model):
    name = models.CharField(max_length=100)
    parent = models.ForeignKey(Parent, on_delete=models.CASCADE)

接下来,我们可以使用Django的查询表达式和过滤器来根据其他形式选择的父外键对子模型进行过滤。以下是一些常见的过滤方法:

  1. 精确匹配:使用exact过滤器来精确匹配外键值。
代码语言:txt
复制
Child.objects.filter(parent_id=1)
  1. 不匹配:使用exclude过滤器来排除指定外键值。
代码语言:txt
复制
Child.objects.exclude(parent_id=1)
  1. 区间匹配:使用__range过滤器来匹配指定外键值的区间。
代码语言:txt
复制
Child.objects.filter(parent_id__range=(1, 5))
  1. 大于/小于匹配:使用__gt(大于)和__lt(小于)过滤器来匹配指定外键值的范围。
代码语言:txt
复制
Child.objects.filter(parent_id__gt=5)
Child.objects.filter(parent_id__lt=10)
  1. 多对多关系匹配:如果父模型和子模型之间是多对多关系,可以使用__in过滤器来匹配多个外键值。
代码语言:txt
复制
Child.objects.filter(parent__in=[1, 2, 3])

以上只是一些常见的过滤方法,根据具体需求,还可以使用其他查询表达式和过滤器来实现更复杂的过滤逻辑。

对于Django的相关产品和产品介绍,腾讯云提供了云服务器、云数据库、云存储等多种云计算服务。您可以访问腾讯云官方网站(https://cloud.tencent.com/)了解更多详情。

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

相关·内容

Django框架学习(三)

b)Django模板变量不能直接进行算术运算 2、模板控制语句:条件判断和for循环 a)条件判断:Django模板中在进行条件判断时候,比较操作符两边必须有空格 b)for循环:Django模板中...| 过滤器(参数...)}} b) Django中模板过滤使用: {{ 模板变量 | 过滤器:参数 }} 注意:Django过滤器:号之后只能接收一个参数 ?...我们可以根据我们需求改为mysql。...AutoField选项使用 unique 如果为True, 这个字段在表中必须有唯一值,默认值是False 在设置时,需要通过on_delete选项指明主表删除数据时,对于引用表数据如何处理...,在django.db.models中包含了可选常量: CASCADE 级联,删除主表数据时连通一起删除外表中数据 PROTECT 保护,通过抛出ProtectedError异常,来阻止删除主表中被应用数据

1.8K40
  • Django中基表创建、字段属性简介、脏数据概念、子序列化

    Django中基表设置 通过图书管理系统引入多表操作:如果我们创建表方式是先抽象出表与表之间相同字段建一个类,然后在用每个表类去继承这个类,如下面的代码,我们将无法得到期望表字段。...通过逻辑将A、B表进行连表查询,不会有任何异常。如两张表建立了一对一字段,在A表,那么先往B表写数据就更合理。...Book 3)Author 和 AuthorDetail 一对一:根据实际需求建立在合理位置 AuthorDetail(在AuthorDetail方作者就可以没有AuthorDetail,...更合理) """ Django orm中外字段属性详解 在建表之前我们对外字段属性进行了解: 1)related_name在外中设置反向查询字段名:正向找字段名,反向找related_name...如果涉及到通过进行跨表查询,然后再将查询数据反序列化到前台就需要用到子序列化,比如下面的例子:我们查询出版社信息时候连带将book表中该出版社所出版过书名一并查出来。

    4.3K30

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

    准备工作 创建管理员用户名和密码:  1 python manage.py createsuperuser   根据提示创建用户名 密码 在admin.py中注册模型类 1234567 from django.contrib...admin.site.register(Test,TestAdmin) 浏览器端登录页面:类似以下后缀 1 http://127.0.0.1:8000/admin/ ---- 管理页面显示 创建模型管理类来管理某个模型在后台显示页面形式...用 list_filter 来激活管理更改列表页面右侧侧栏过滤器,如下截图所示: list_filter 应是一个列表或元组,参数字段可以是模型字段,包括字段(注意list_display是不能直接接收字段...),会将对应字段值列出来,一般用于快速过滤有重复值字段。...12 class TestAdmin(admin.ModelAdmin):    search_fields = ['id','name'] 在搜索框中进行搜索时,Django 会将搜索查询拆分成多个词

    1.3K30

    django框架菜鸟教程_django框架菜鸟教程

    注意 Django 仅在调试模式下(DEBUG=True)能对外提供静态文件。...当DEBUG=False工作在生产模式时,Django不再对外提供静态文件,需要是用collectstatic命令来收集静态文件并交由其他静态文件服务器来提供。...HttpRequest对象属性GET、POST都是QueryDict类型对象 QueryDict类型对象用来处理同一个带有多个值情况 方法get():根据获取值 dict.get(‘’...,默认值) 可简写为 dict[‘’] # 说明: # 如果一个同时拥有多个值将获取最后一个值 # 如果不存在则返回None值,可以设置默认值进行后续处理 方法getlist():根据获取值...%} 子模板:{%extends “模板路径”%} 写在子模板文件第一行 七、数据库 ORM框架: 通过类和类对象就能操作它对所对应表格中数据 根据设计类自动生成数据库中表格 数据库迁移:

    3K40

    35.Django2.0文档

    C:根据用户输入委派视图部分,由 Django 框架根据 URLconf 设置,对给定 URL 调用适当Python 函数  由于 C 由框架自行处理,而 Django 里更关注是模型(Model...该层处理与表现相关决定: 如何在页面或其他类型文档中进行显示。   V:代表视图(View),即业务逻辑层。 该层包含存取模型及调取恰当模板相关逻辑。 你可以把它看作模型与模板之间桥梁。  ...它有一个或多个作者(和作者是多对多关联关系[many-to-many]), 只有一个出版商(和出版商是一对多关联关系[one-to-many],也被称作          [foreign key...默认地,管理工具使用`` 下拉框`` 来展现`` `` 字段。但是,正如`` 多对多字段`` 那样,有时候你不想忍受因装载并显示这些选项而产生大量开销。...解决这个问题办法是使用`` raw_id_fields`` 选项。它是一个包含字段名称元组,它包含字段将被展现成`` 文本框`` ,而不再是`` 下拉框`` 。

    11.3K100

    【自然框架】之通用权限(四):角色表组

    这个表我也打算可以做成n级分类形式,因为如果角色多了(比如几百个),不分类的话,看起来就比较乱,但是如何来分类我又没有想好。当然对于一些简单情况,也是可以不分类。       ...如果一个人拥有了一个拒绝角色,那么拒绝角色里面不允许做操作就绝对不可以做,不管他拥有的其他正向角色是如何规定。       至于给人员分配角色时候如何来具体区分,还没有太完善。       ...角色和功能节点起到“联合主键”功能,一个节点可以有多个方案以供选择。但是一个角色和节点组合只能选择一个方法。...SQL 过滤条件 nvarchar 200 _ 0 SQL语句里where后面的查询条件 ParentID 节点ID int 4 1 0 节点ID。...1 0 ListCaseID 列表过滤方案 int 4 1 0 ,给分页控件查询条件用 ControlCaseID 控件过滤方案 nvarchar 200 _ 0 1,2,3形式,下拉列表框级别的控件用

    1.6K80

    后端框架学习-Django

    过滤器:在变量输出时对变量进行处理 可以通过使用过滤器来改变变量输出显示 语法: {{变量|过滤器1:'参数1'|过滤器2:'参数值2'…}} 常用过滤器: lower:转换为小写 upper:...转换为大写 safe:魔人布对变量内字符串进行html转义 add:将value值增加n 模板继承 模板继承使模板内容重用,子模板直接继承模板全部内容并可以覆盖模板中相应块。...创建一对一数据 无模型类,和之前相同 有模型类: wife = Wife.objects.create(name=’王夫人’,author = author1(类属性名称绑实例...无模型类,和之前相同 有模型类: 类似上面 wife = Wife.objects.create(name=’王夫人’,author = author1(类属性名称绑实例)...Cookies 保存在客户端浏览器上存储空间 特点: cookies在浏览器是以键值对形式进行存储和值都是以ASCII码形式存储 存储数据带有生命周期 cookies数据是按照域隔离

    9.4K40

    web开发框架之Django基础

    在脚本中如何进行Django运行 if __name__ == '__main__': import os import django # 注意路径(当前所在位置,要加载Django...(DEBUG=True)能对外提供静态文件,当DEBUG=False工作在生产模式时,Django不再对外提供静态文件,      需要是用collectstatic命令来收集静态文件并交由其他静态文件服务器来提供...POST都是QueryDict类型对象与python字典不同,QueryDict类型对象用来处理同一个带有多个值情况          方法get():根据获取值...可简写为 dict[''] 方法getlist():根据获取值,值以列表返回,可以获取指定所有值,如果不存在则返回空列表...request.session['']=值 根据读取值。

    6.1K10

    Django-Multitenant,分布式多租户数据库项目实战(PythonDjango+Postgres+Citus)

    目录 项目源码 安装 支持 Django 版本/前提条件。 用法 模型变化 使用 mixins 更改模型 在 db 层自动化复合: 在哪里设置租户?...以下链接更多地讨论了何时以及如何为您多租户数据库选择正确架构权衡: https://www.citusdata.com/blog/2016/10/03/designing-your-saas-database-for-high-scalability...: 在 db 层自动化复合: 使用 TenantForeignKey 在租户相关模型之间创建将自动将 tenant_id 添加到引用查询(例如 product.purchases)和连接查询(例如...如果要确保在 db 层创建复合(带有 tenant_id),则应将 settings.py 中数据库 ENGINE 更改为 django_multitenant.backends.postgresql...在您希望基于租户范围所有视图中使用 set_current_tenant(t) api 设置租户。这将自动(不指定显式过滤器)将所有 django API 调用范围限定为单个租户。

    1.9K10

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

    在这个表单中,Question字段是一个select选择框,包含了当前数据库中所有的Question实例。Django在admin站点中,自动地将所有的关系展示为一个select框。...在我们例子中,目前只有一个question对象存在。 请注意图中绿色加号,它连接到Question模型。每一个包含关系对象都会有这个绿色加号。...点击它,会弹出一个新增Question表单,类似Question自己添加表单。填入相关信息点击保存后,Django自动将该Question保存在数据库,并作为当前Choice关联对象。...通俗讲就是,新建一个Question并作为当前Choice。 但是,实话说,这种创建方式效率不怎么样。...关于这些方法属性更多信息,请参见list_display。      我们还可以对显示结果进行过滤,通过使用list_filter属性。

    3.6K60

    django 引用自身和on_delete参数

    如果对应那条数据被删除了,那么这条数据也会被删除。 PROTECT:受保护。即只要这条数据引用了那条数据,那么就不能删除外那条数据。如果我们强行删除,Django就会报错。...注意:以上配置都是django级别的,在数据库中级别依旧是RESTRICT 数据库层面的约束有: RESTRICT:默认选项,如果想要删除记录时,而在子表中有关联该记录,则不允许删除表中记录...、update时候,子表会将关联记录字段所在列设为null,所以注意在设计子表时不能设为not null; 为什么在django中可以是用不同约束去操作数据库呢。...比如 django 中 on_delete=CASCADE, 但是数据库约束是RESTRICT....在进行删除A表数据时,发现被约束着,使数据不能被删除,则django会先去删除约束B表数据,然后再来删除A表数据。

    1.3K20

    初探Django框架

    有一个比较有意思过滤器是safe , 如果输出内容经过这个过滤器的话那么Django就不会对其进行转义,可以让该数据语义生效。...子模板设置模板预留区域内容: { % block 名称 % } 内容 {% endblock 名称 %} Django 模型(Model) 如上图所示, 模型实际上就是和数据库进行交互一个模块...根据这一设置,与 MySQL 中相应数据库和用户连接起来。...Django真正做任务是生成数据库操作语句, 然后交给pymysql这些模块, 让它们去跟数据库进行真正连接和执行查询语句, 然后返回得到数据交回到Django, Django再通过内部方法对结果进行处理分配到具体对象一些属性当中...get():返回字符串,如果该对应有多个值,取出该最后一个值。

    2K20

    用人话讲解django之数据增删改

    sql操作语句不复杂,可以使用django ORM 语句,它是通过一些封装,根据 ORM 语法可以对数据库增删改查,用一同一个 ORM 语句可以支持对 mysql、sqlite、PostgreSQL...创建时间") updated_at = models.DateTimeField(auto_now=True, verbose_name="更新时间") # ForeignKey一对多...,比如一个班级有多个学生,就属于一对多,要放到"多"那张表, # related_name是对外取别名,常用在djangoorm反向查询中 cls = models.ForeignKey...下面在一个 views.py 文件中写一个视图函数,使用 ORM 进行基本增删改操作。记得给函数配置对应 url。...name="1903") # stu_info左边key要和Student模型字段对应上,因为cls是,所以要对应一个班级实例 stu_info = { "name

    40030

    Django 3.1 官网学习路线

    字段还可以有各种可选参数;在本例中,我们将投票默认值设置为 0。 最后,请注意使用定义了关系。这告诉 Django 每个选择都与一个问题相关。...按照惯例,Django 会将"_id"附加到外字段名。(是的,你也可以重写这个。) 关系是通过约束来显式。...此页面显示数据库中所有问题,并允许您选择一个进行更改。有“What's up?”“我们之前提出问题是: 这里需要注意是: 表单是根据问题模型自动生成。...投票行动-处理对特定问题中特定选择进行投票。 在 Django 中,Web 页面和其他内容是通过视图传递。每个视图都由一个 Python 函数(或方法,对于基于类视图)表示。...“添加选择”表单如下所示: 在该表单中,“Question”字段是一个选择框,包含数据库中每个问题。Django 知道一个应该在管理中表示为一个框。在我们例子中,目前只存在一个问题。

    8.2K10

    Django 模板

    模板继承 模板 子模板 模板如何划分区域 Django 模板 模板传值取值 后端传值 键值对形式:{‘name’:value} 精准传值,用啥传啥 函数:locals() locals()将当前名称空间中所有的变量名全部传递给页面...1024 return render(request, 'func.html', locals()) 文件大小:{{ file_data|filesizeformat }} date 根据给定格式对一个日期变量进行格式化...后端: 使用views.py mark_safe 效果相同 Django 会自动对 views.py 传到HTML文件中标签语法进行转义,令其语义失效。...加 safe 过滤器是告诉 Django 该数据是安全,不必对其进行转义,可以让该数据语义生效(这里涉及到xss攻击自行查阅) from django.shortcuts import render...子模板设置模板预留区域内容: {% block 名称 %} 子内容 {% endblock 名称 %} 子版也可以继续使用母版划定区域内内容 {{ block.super }} 模板如何划分区域

    4.8K10

    django 1.8 官方文档翻译:2-1-1 模型语法

    中介模型有一些限制: 中介模型必须有且只有一个到源模型(上面例子中Group),或者你必须使用ManyToManyField.through_fields 显式指定Django 应该使用。...如果你模型中存在超个一个,并且through_fields没有指定,将会触发一个无效错误。 对目标模型有相同限制(上面例子中 Person)。...对于通过中介模型与自己进行多对多关联模型,允许存在到同一个模型两个,但它们将被作为多对多关联关系两个(不同)方面。...Changed in Django 1.7: 在Django 1.6 及之前版本中,中介模型禁止包含多于一个。...SQL 保留字例如join、where 和select,可以用作模型字段名,因为Django 会对底层SQL 查询语句中数据库表名和列名进行转义。 它根据数据库引擎使用不同引用语法。

    5K20

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

    通过 Django 将数据库表反向生成模型时,Django 会默认带上 managed 和 db_table 信息。我主要说下 Meta 一些重要属性,其他属性你可以通过文档信息进行学习。...根据模型 Meta 信息设置,模型继承方式可以分为三种: 1)抽象模型 模型 Meta 类中含有 abstract = True 属性。...虽然在 Model 层不推荐使用多重继承,但 Django ORM 还是支持这样使用方式。如果使用多表继承,子模型跟每个模型都会添加一个一对一关系。...Multiple(Model_One, Model_Two): attr3 = models.CharField(max_length=10) 多重继承时候,子类 ORM 映射会选择第一个类作为主键管理...,其他类作为一般管理。

    1.7K20
    领券