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

DjangoForeignKey和ManyToManyField多表查询

多表查询模型重要功能之一, Django提供了一套基于关联字段独特解决方案....ForeignKey.related_name 这个名称用于让关联对象反查到源对象. 如果你不想让Django 创建一个反向关联,请设置related_name 为 '+' 或者以'+' 结尾....ForeignKey.related_query_name以ForeignKey.related_name作为默认值 使用ForeignKey查询 前向查询 若关系模型A包含与模型B关联关联字段, 模型...被索引关系模型可以访问所有参照它模型实例,如Entry.blog作为Blog外键,默认情况下Blog.entry_set是包含所有参照BlogEntry示例查询,可以使用查询API取出相应实例...flight.reserve.remove(user) flight.save() 参考资料: django文档-模型字段-关联字段 django文档 - 执行查询 - 关联对象 django文档 -

1.7K10

07.Django学习之model进阶

查询 是惰性执行 —— 创建查询不会带来任何数据库访问。...首次对查询进行求值 —— 同时发生数据库查询 ——Django 将保存查询结果到查询(非简单查询查询结果,简单查询往下看。)...对于这些情况,Django 允许你指定一个中介模型来定义多对多关系。 你可以将其他字段放在中介模型里面。源模型ManyToManyField 字段将使用through 参数指向中介模型。...也可以通过使用双下划线“__”连接字段名来实现指定递归查询。 没有指定字段不会缓存,没有指定深度不会缓存,如果要访问的话Django会再次进行SQL查询。...也可以通过depth参数指定递归深度,Django会自动缓存指定深度内所有的字段。如果要访问指定深度外字段Django会再次进行SQL查询

2K30
您找到你想要的搜索结果了吗?
是的
没有找到

Django-model进阶(中介模型查询优化,extra,整体插入)

查询 是惰性执行 —— 创建查询不会带来任何数据库访问。...在一个新创建查询集中,缓存为空。首次对查询进行求值 —— 同时发生数据库查询 ——Django 将保存查询结果到查询缓存中并返回明确请求结果(例如,如果正在迭代查询,则返回下一个结果)。...对于这些情况,Django 允许你指定一个中介模型来定义多对多关系。 你可以将其他字段放在中介模型里面。源模型ManyToManyField 字段将使用through 参数指向中介模型。...也可以通过使用双下划线“__”连接字段名来实现指定递归查询。 没有指定字段不会缓存,没有指定深度不会缓存,如果要访问的话Django会再次进行SQL查询。...也可以通过depth参数指定递归深度,Django会自动缓存指定深度内所有的字段。如果要访问指定深度外字段Django会再次进行SQL查询

1.6K70

django 1.8 官方文档翻译: 2-2-1 执行查询

执行查询 一旦你建立好数据模型之后,django会自动生成一套数据库抽象API,可以让你执行增删改查操作。这篇文档阐述了如何使用这些API。关于所有模型检索选项详细内容,请见数据模型参考。...为了把数据库表中数据表示成python对象,django使用一种直观方式:一个模型类代表数据库一个表,一个模型实例代表数据库表中一条特定记录。...你可以模型Manager那里取得QuerySet。每个模型都至少有一个Manager,它通常命名为objects。...使用过滤器获取特定对象 all()方法返回结果集中包含全部对象,但是更普遍情况是你需要获取完整集合一个子集。 要创建这样一个子集,需要精炼上面的结果,增加一些过滤器作为条件。...查询是延迟 QuerySets 是惰性创建 QuerySet 动作不涉及任何数据库操作。

4.3K20

Django之QuerySet详解

数据库中查询出来结果一般是一个集合,这个集合叫做 QuerySet。...dates() 根据日期获取查询 datetimes() 根据时间获取查询 none() 创建查询 all() 获取所有的对象 union() 并 intersection....]> 如果有多个字段,传递flat将发生错误。 如果不传递任何值给values_list(),它将返回模型所有字段,以在模型中定义顺序。 常见情况是获取某个模型实例特定字段值。...当最初获取数据时不知道是否需要这些特定字段情况下,如果正在使用查询结果,可以告诉Django不要从数据库中检索它们。...通过传递字段名称到defer()实现不加载: Entry.objects.defer("headline", "body") 具有延迟加载字段查询仍将返回模型实例。

2.3K20

django_2

要求 修改数据库 Django shell 数据级联(一对多) 元信息 定义字段 模型过滤 创建对象4种方式 查询 过滤器 获取单个对象 字段查询 时间 聚合函数 跨关系查询 F对象 Q对象...通过主表查询数据,隐性属性 使用主表对象dept 调用 emp_set(模型小写_set)属性 # 通过从表查询主表 def getDname(rquest): emp...(查询Django默认通过模型objects对象实现模型数据查询。...return cls(p_name=p_name,p_age=p_age) person = Person.create('zs') 8.查询 概念:查询表示数据库获取对象集合,.../缓存 查询缓存:每个查询都包含一个缓存,来最小化对数据库访问 在新建查询集中,缓存首次为空,第一次对查询求值,会发生数据缓存,django会将查询出来数据做 一个缓存,并返回查询结果

3.6K30

完整 Django 零基础教程|初学者指南 - 第 3 部分 转自:维托尔·弗雷塔斯

我们需要找到一种方法来区分普通用户和管理员用户,因为只有管理员才能创建板。下面概述了我们主要用例和每种类型用户角色: ? 用例图 类图 用例图中,我们可以开始考虑我们项目的实体 。...同样,帖子 将需要一个字段来表示它属于哪个主题 ,以便我们可以在讨论中仅列出在特定主题中创建帖子 。最后,我们需要在Topic和Post中字段来了解谁发起了讨论,以便我们可以识别谁在发布回复。...我们将通过实现反向关系来实现这一点,其中 Django 将自动在数据库中执行查询以返回属于特定主题所有帖子 列表。 好,现在足够 UML!...在模型之间创建关系一种方法是使用 ForeignKey字段。它将在模型之间创建链接并在数据库级别创建适当关系。该 ForeignKey字段需要一个位置参数,其中包含对其将相关模型引用。...例如,在 Topic模型中,board字段ForeignKey给 Board模型。它告诉 Django 一个 Topic实例只与一个 Board实例相关。

2.1K40

Django ORM 知识概要

Django中带migrations数据表中更改数据库记录 字段 常用字段 自增长字段 models.AutoField() models.BigAutoField() 二进制数据 models.BinaryField...Django 数据表操作 更改数据表 删除数据库表步骤 删除对应模型类代码 删除migrationd文件夹下面的模型类 删除Djangomigrations表中对应记录 删除数据库表 导入数据...Django shell 导入数据 引入模型 调用模型对象save方法 自己定义一个脚本批量导入数据 fixtures Django serialization -> model 保存 python3...values(),values_list() 获取字典或者元组形式结果 dates(),datetimes() 根据时间日期获取查询 union(),intersection(),difference...() 并,交集,差;MySQL Innodb 只支持并 select_related() 一对一、多对一查询优化,prefetch_related() 一对多、多对多查询优化。

1.8K20

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

字段 模型中不可或缺且最为重要,就是字段,它是一组数据库字段列表。字段被指定为类属性。 要注意选择字段名称不要和模型 API 冲突,比如clean、save 或者delete。...OneToOneField字段也接受一个特定可选parent_link参数,在模型字段参考 中有详细介绍。 在以前版本中,OneToOneField 字段会自动变成模型 主键。...由于Django 查询语法工作方式,字段名称中连续下划线不能超过一个。...查询始终返回请求模型 也就是说,没有办法让DJango查询Person对象时返回MyPerson对象。Person 对象查询集会返回相同类型对象。...多重继承 就像Python子类那样,DJango模型可以继承自多个父类模型。切记一般Python名称解析规则也会适用。出现特定名称第一个基类(比如Meta)是所使用那个。

4.9K20

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

网站:http://python.usyiyi.cn/django/index.html 模型 模型是有关你数据,简单、确定信息源。它包含了你所储存数据一些必要字段和行为。...通常来说,每个模型都对应数据库中一张表。 基础: 每个模型都是django.db.models.Model类子类。 模型每个属性都表示数据库中一个字段。...字段 模型 中不可或缺且最为重要,就是字段,它是一组数据库字段列表。字段被指定为类属性。...查询只返回请求时所使用 model (Querysets still return the model that was requested) 无论你何时查询 User 对象,Django 都不会返回...针对 User 对象查询只返回 User 对象。代理对象精要就在于依赖原始 User 代码仅对它自己有效,而你自己代码就使用你扩展内容。

3.1K30

Django 教程 --- Django 模型

SQL(结构化查询语言)很复杂,涉及许多不同查询,用于创建,删除,更新或与数据库有关任何其他内容。Django模型简化了任务并将表组织到模型中。通常,每个模型都映射到单个数据库表。...本文围绕如何使用Django模型方便地将数据存储在数据库中展开。此外,我们可以使用Django管理面板来创建,更新,删除或检索模型字段以及各种类似的操作。...模型每个属性代表一个数据库字段。 通过所有这些,Django为您提供了一个自动生成数据库访问API。请参阅进行查询。...Python manage.py makemigrations 创建要在表上方创建模型SQL查询,并 Python manage.py migrate 在Django管理界面中渲染模型 要在Django...models.py导入相应模型并将其注册到管理界面。

2.1K10

django模型动态修改参数,增加 filter 字段方式

模型系统常用字段字段参数 常用字段 AutoField:int自增列,必须填入参数 primary_key=True。...字段参数: - to:设置要关联表 - to_field:设置要关联字段 - related_name:反向操作时,使用字段名,用于代替原反向查询'表名_set'。...) theclass = models.ForeignKey(to="Classes", related_name="students") 当我们要查询某个班级关联所有学生(反向查询)时,我们会这么写...字段参数: to:设置要关联表 related_name:同ForeignKey字段。 related_query_name:同ForeignKey字段。...其他属性详情请查看:官方文档 以上这篇django模型动态修改参数,增加 filter 字段方式就是小编分享给大家全部内容了,希望能给大家一个参考。

3.8K31

Django学习笔记之ORM多表操作

创建模型 实例:我们来假定下面这些概念,字段和关系 作者模型:一个作者有姓名和年龄。 作者详细模型:把作者详情放到详情表,包含生日,手机号,家庭住址等信息。...注意事项:  表名称myapp_modelName,是根据 模型元数据自动生成,也可以覆写为别的名称   id 字段是自动添加  对于外键字段Django 会在字段名上添加"_id" 来创建数据库中列名...多对多关系其它常用API: book_obj.authors.remove() # 将某个特定对象被关联对象集合中去除。...要做跨关系查询,就使用两个下划线来链接模型(model)间关联字段名称,直到最终链接到你想要model 为止。...如果我们要对两个字段值做比较,那该怎么做呢? Django 提供 F() 来做这样比较。F() 实例可以在查询中引用字段,来比较同一个 model 实例中两个不同字段值。

2.8K40

Django模型

定义属性 Django根据属性类型确定以下信息: 当前选择数据库支持字段类型 渲染管理表单时使用默认html控件 在管理站点最低限度验证 django会为表创建自动增长主键列...4.查询 查询表示数据库中获取对象集合,在管理器上调用某些过滤器方法会返回查询查询可以含有零个、一个或多个过滤器。...过滤器基于所给参数限制查询结果,Sql角度,查询和select语句等价,过滤器像where和limit子句。 返回查询过滤器如下: all():返回所有数据。...在新建查询集中,缓存为空,首次对查询求值时,会发生数据库查询django会将查询结果存在查询缓存中,并返回请求结果,接下来对查询求值将重用缓存中结果。...(queryset) View Code 上去 5.模型类关系 关系字段类型 关系型数据库关系包括三种类型: ForeignKey:一对多,将字段定义在多一端中。

6.1K21

06.Django基础五之django模型层(二)多表操作

表建立多对多关系,ManyToManyField可以建在两个模型任意一个,自动创建第三张表,并且注意一点,你查看book表时候,你看不到这个字段,因为这个字段就是创建第三张表意思,不是创建字段意思...注意事项: 表名称myapp_modelName,是根据 模型元数据自动生成,也可以覆写为别的名称   id 字段是自动添加 对于外键字段Django 会在字段名上添加"_id" 来创建数据库中列名...多对多关系其它常用API: book_obj.authors.remove() # 将某个特定对象被关联对象集合中去除。...Django 提供两种方法使用原始SQL进行查询:一种是使用raw()方法,进行原始SQL查询并返回模型实例;另一种是完全避开模型层,直接执行自定义SQL语句。...在这些情况下,我们可以直接访问数据库,完全避开模型层。     我们可以直接django提供接口中获取数据库连接,然后像使用pymysql模块一样操作数据库。

2.7K20

django模型

字段自述名 每个字段类型都接受一个可选位置参数——字段自述名,如果没有给定自述名, Django将根据字段属性名称自动创建自述名——将属性名称下划线替换成空格 ForeignKey、 ManyToManyField...也可以使用一条语句创建并保存一个对象,使用create()方法 查询对象 通过模型管理器构造一个查询,来数据库中获取对象。 查询(queryset)表示数据库中取出来对象集合。...过滤器基于所给参数限制查询结果。 SQL 角度,查询和SELECT 语句等 价,过滤器是像WHERE 和LIMIT 一样限制子句。 你可以模型管理器那里取得查询。...查询是惰性执行 —— 创建查询不会带来任何数据库访问。...如果您在某些情 况下使用查询结果,当您最初获取数据时不知道是否需要这些特定字段,可以告诉 Django不要从数据库中检索它们。

3.1K20

Django模型

Django模型 Django模型定义在models.py文件中。模型是MVT中M,也相当于MVC中M。 在Django中,模型必须继承自Model类。...django会为表创建自动增长主键列,每个模型只能有一个主键列,如果使用选项设置某属性为主键列后django不会再创建自动增长主键列。...默认创建主键列属性为id,也可以使用pk,意为primary key. 字段名称中不能出现双下划线,因为这是Django查询语法之一。...下面是Django中常用字段类型详情 字段类型 类型 说明 BigAutoField 自动增长BigIntegerField,通常不用指定,不指定时Django会自动创建属性名为id自动增长属性...外键:通过使用models.ForeignKey来设置外键,ForeignKey第一个参数是要关联模型类名,第二个参数是on_delete。

1.9K20

Django之Model操作数据库详解

Django ORM框架功能: 建立模型类和表之间对应关系,允许我们通过面向对象方式来操作数据库。 根据设计模型类生成数据库中表格。 通过方便配置就可以进行数据库切换。...对应app目录下models.py 1、生成一个简单数据库表: 在未指定primary_key情况下,Django会默认创建一个id自增字段作为主键。...=2) #创建出版社信息,其与出版社外键关系为一对多,所以用外键 publish = models.ForeignKey(Publish) #创建出版日期...根据日期获取查询 datetimes() 根据时间获取查询 none() 创建查询 union() 并 intersection...表达式可以是简单值、对模型(或任何关联模型)上字段引用或者聚合表达式(平均值、总和等)。

7K10
领券