首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往
您找到你想要的搜索结果了吗?
是的
没有找到

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

ordering 指定默认什么字段排序。...反向查询(表名:book_set,因为加上_set是因为反向查询时候,你查询出来可能是多条记录集合): publish=Publish.objects.get(name="苹果出版社") #publish.book_set.all...) egon.authorDeail就拿到了这个对象,因为一对一找到就是一条记录,注意写法:作者对象.字段名,就拿到了那个关联对象     反向查询(表名:author):不需要_set,因为一对一正向反向都是找到一条记录...正向查询(字段:authors):     反向查询(表名:book_set): 注意:       你可以通过在 ForeignKey() 和ManyToManyField定义设置 related_name...''' 基于双下划线查询就一句话:正向查询字段,反向查询表名小写用来告诉ORM引擎join哪张表,一对一、一对多、多对多都是一个写法,注意,我们写orm查询时候,哪个表在前哪个表在后都没问题

2.6K20

Python进阶29-ORM介绍

(): 对查询结果反向排序 count(): 返回数据库匹配查询(QuerySet)对象数量。...,从book表查询到author表就叫做正向查询 反向查询:反过来,从author表查询到book表,就是反向查询 正向查询字段,反向查询表名小写_set.all() ---- 需求:查询红楼梦书所有的作者...正向:正向查询字段 反向查询:反向表名小写_set.all() 4******基于对象查询,多次查询(子查询) 打印Django查询数据SQL语句...**ForeignKey** 外键类型在ORM中用来表示外键关联关系,一般把ForeignKey字段设置在 '一对多''多'一方。...ordering 指定默认什么字段排序。 只有设置了该属性,我们查询到结果才可以被reverse()。

4.3K10

Django学习笔记之ORM多表操作

注意事项:  表名称myapp_modelName,是根据 模型元数据自动生成,也可以覆写为别的名称   id 字段是自动添加  对于外键字段,Django 会在字段名上添加"_id" 来创建数据库列名...定义好模型之后,你需要告诉Django _使用_这些模型。你要做就是修改配置文件INSTALL_APPSZ设置,在其中添加models.py所在应用名称。...基于双下划线跨表查询  Django 还提供了一种直观而高效方式在查询(lookups)中表示关联关系,它能自动确认 SQL JOIN 联系。...''' 正向查询字段,反向查询表名小写用来告诉ORM引擎join哪张表 ''' 一对多查询 # 练习: 查询苹果出版社出版过所有书籍名字与价格(一对多) # 正向查询 字段...如果我们要对两个字段值做比较,那该怎么做呢? Django 提供 F() 来做这样比较。F() 实例可以在查询引用字段,来比较同一个 model 实例两个不同字段值。

2.8K40

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

多对一关系 Django 使用 ForeignKey 定义多对一关系。 和使用其他 字段(Field) 类型一样:在 model 当中把它做为一个类属性包含进来。...最后,如果你只想在 model 修改 Python-level 级行为,而不涉及字段改变。 代理 model (Proxy models) 适用于这种场合。...例如,在上面的代码,如果去掉 related_name 属性,在 ChildA ,m2m 字段反向名称就是 childa_set;而 ChildB m2m 字段反向名称就是 childb_set...Django 自带 User model 没有定义排序设置(这是故意为之,是因为排序开销极大,我们不想在获取用户时浪费额外资源)。..."] proxy = True 普通 User 查询,其结果是无序;而 OrderedUser 查询结果是 username 排序

3.1K30

【Python全栈100天学习笔记】Day41 Django深入理解框架

配置关系型数据库MySQL 我们继续来完善上一个章节OA项目,首先从配置项目使用数据库开始。...Dept.objects.order_by('no')[2:4] # 部门编号排序查询3~4部门 , ]> 高级查询。...(从一对多关系“一”一方查询“多”一方),反向查询属性默认名字是类名小写_set(如上面例子emp_set),当然也可以在创建模型时通过ForeingKeyrelated_name属性指定反向查询属性名字...ManyToManyField属性 symmetrical:是否建立对称多对多关系。 through:指定维持多对多关系中间表Django模型。...managed 设置为True时,Django在迁移创建数据表并在执行flush管理命令时把表移除 order_with_respect_to 标记对象为可排序 ordering 对象默认排序 permissions

2.2K30

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

该主题 模式将包括四个领域:主题 ,最后更新 日期将被用来定义主题排序,主题起动机 来识别用户 谁开始主题 ,和一个叫做场板 来定义哪些主板 特定主题 属于....我们将通过实现反向关系来实现这一点,其中 Django 将自动在数据库执行查询以返回属于特定主题所有帖子 列表。 好,现在足够 UML!...该 related_name参数将用于创建 反向关系 ,其中 Board实例将有权访问 Topic属于它实例列表。 Django 会自动创建这种反向关系——这 related_name是可选。...在 Post模型,该 updated_by字段设置 related_name='+'. 这告诉 Django 我们不需要这种反向关系,所以它会忽略它。...您可以在下面看到类图和使用 Django 生成模型源代码之间比较。绿线代表我们如何处理反向关系。 ? 类图模型定义 此时,您可能会问自己:“主键/ID 怎么样”?

2.1K40

Django ORM那些相关操作

order_by(*field): 对查询结果排序 reverse(): 对查询结果反向排序,请注意reverse()通常只能在具有已定义顺序...此时可以使用distinct(),注意只有在PostgreSQL中支持字段去重。)...它存在于下面两种情况: 外键关系反向查询 多对多关联关系 简单来说就是当 点后面的对象 可能存在多个时候就可以使用以下方法。...如果我们要对两个字段值做比较,那该怎么做呢?   Django 提供 F() 来做这样比较。F() 实例可以在查询引用字段,来比较同一个 model 实例两个不同字段值。...终端打印SQL语句 在Django项目的settings.py文件,在最后复制粘贴如下代码: LOGGING = { 'version': 1, 'disable_existing_loggers

2.3K60

Django学习笔记之Models与ORM操作

那么绑定关系只有上面一种方式 # 如果第三张表是自己创建: class Book2Author(models.Model): author=models.ForeignKey...对查询结果反向排序 # distinct(): 从返回结果剔除重复纪录 # values_list(*field): 它与values()非常相似,它返回是一个元组序列...__city或者author__namepublisher,author是book表绑定字段 #一对多和多对多在这里用法没区别 # 反向查找(条件)----在没有外键,查找与其关联表字段信息...,从而得出总计值(也可以是平均值或总和),即为查询集一项生成聚合。...F查询和Q查询     F 使用查询条件值,专门取对象某列值操作     Q 查询提供了或操作 # from django.db.models import F # models.Tb1

1.2K60

Django之Model操作数据库详解

一、django ORM简介 O(objects):类和对象。R(Relation):关系关系数据库表格。M(Mapping):映射。...Django ORM框架功能: 建立模型类和表之间对应关系,允许我们通过面向对象方式来操作数据库。 根据设计模型类生成数据库表格。 通过方便配置就可以进行数据库切换。...对查询结果排序 reverse() 对查询结果反向排序 distinct() 从返回结果剔除重复记录 values_list(*field...返回数据库匹配对象第一个对象 last() 返回数据库匹配对象最后一个对象 exists() 判断一个对象集合是否包含指定对象...5. reverse():     reverse()         反向排序QuerySet返回元素。 第二次调用reverse()将恢复到原有的排序

7K10

DjangoForeignKey和ManyToManyField多表查询

blog = models.ForeignKey(Blog, to_field=Blog.name) ForeignKey.db_constraint Django ModelForeignKey字段主要功能是维护一个一对多关系...ForeignKey.related_name 这个名称用于让关联对象反查到源对象. 如果你不想让Django 创建一个反向关联,请设置related_name 为 '+' 或者以'+' 结尾....ManyToManyField.through_fields 上文示例Membership 有两个外键指向Person (person 和inviter),这使得关联关系含混不清并让Django 不知道使用哪一个...ManyToManyField 字段模型外键名称(本例为group),field2 为指向目标模型外键名称(本例为person)....,可以使用db_table关键字参数指定. others 下列API和ForeignKey同名API相同.

1.7K10

Django关系映射

什么是关系映射? 在关系型数据库,通常不会把所有数据都放在同一张表,不易于扩展。...级联删除特殊字段 models.CASCADE:Django模拟SQL约束ON DELETE CASCADE,并删除包含ForeignKey对象 注意该CASCADE会有限查找是否有关联数据,先删除管理数据...models.PROTECT:抛出ProtectedError以阻止被引用对象删除 SET_NULL:设置ForeignKey为Null,需要指定null=True from django.db import...') 反向查询 没有外键属性一方,可以调用反向属性查询到关联另一方 反向关联属性为实例对象.引用类名(小写) 当反向引用不存在时候,则会触发异常 当UserId类定义了外键约束...MySQL创建多对多需要以来第三张表来完成 Django无需手动创建,Django自动完成 语法:在关联两个类任意一个类models.ManyToManyField(MyModel

1.7K20

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

多对一关系  Django 使用 django.db.models.ForeignKey 定义多对一关系。和使用其它字段类型一样:在模型当中把它做为一个类属性包含进来。...toppings = models.ManyToManyField(Topping) 和使用ForeignKey 一样,你也可以创建递归关联关系(对象与自己多对多关联)和与尚未定义关系模型关联关系...和使用 ForeignKey一样,你可以定义_ 递归关联关系和引用尚未定义关系模型。详见模型字段参考_。 另见 在一对一关系模型例子 中有一套完整例子。...例如,在上面的代码,如果去掉 related_name属性,在 ChildA,m2m 字段反向名称就是 childa_set;而 ChildB m2m 字段反向名称就是 childb_set。...但是这个 OnetoOneField 字段默认 related_name 值与 ForeignKey 和 ManyToManyField 默认反向名称相同。

4.9K20

Django ORM 多表操作

目录 Django ORM 多表操作 表模型 表关系 创建模型 逆向到表模型 插入数据 ORM 添加数据(添加外键) 一对多(外键 ForeignKey) 一对一 (OneToOneFeild) 多对多...3、一般不需要设置联级更新. 4、外键在一对多设置:models.ForeignKey("关联类名", on_delete=models.CASCADE)。...(常用) 一对多,设置外键属性类(多表),MySQL 显示字段名是:外键属性名_id。...book.authors.clear() 跨表查询 正向:外键字段在哪,去从该表角度查另外表,就是正向 反向:从没有外键表去查另外相关联表,就是反向 口诀: 正向查询外键字段 反向查询表名小写...and关系,那么或,非得关系如果构造呢?

1.7K20

基于Django OneToOneField和ForeignKey区别详解

相反地,使用ForeignKey, 反向关联后会返回QuerySet。...,再删除此字段信息时候同时删除包含ForeignKey字段目标(object) PROTECT 通过django.db.IntegrityErrorProtectedError来保护此字段不被删除...,默认为字段名 related_query_name 用于filter函数过滤和values函数 to_field 关系关联相关对象名称 db_constraint 控制在数据库是否应该建立这一字段约束...在概念上我们可以理解其为设置unique属性为True一种类型,区别之处在于它“反向数值会返回一个目标值,这对于继承关系表达十分有用,例如一下示例程序: from django.conf import...以上这篇基于Django OneToOneField和ForeignKey区别详解就是小编分享给大家全部内容了,希望能给大家一个参考。

2.3K20
领券