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

基于Django OneToOneField和ForeignKey的区别详解

django.db.IntegrityError的ProtectedError来保护此字段不被删除,若进行删除操作则抛出错误 SET_NULL 将ForeignKey置为空,这只在null选项为True...on_delete=models.CASCADE) class Meta: abstract = True ForeignKey还有如下的参数可以选择: 参数 功能 limit_choices_to 通过一个限制对字段信息的某一可能选项进行约束...,可以通过字典,函数或者查询值来设置 related_name 可以指定关联的类在本类的名称,通过这一参数可以用两个字段名引用同一个类,通过这个名称父类可以取得子类的值,默认为字段名 related_query_name...用于filter函数过滤和values函数 to_field 关系关联的相关对象名称 db_constraint 控制在数据库是否应该建立这一字段的约束 swappable 用于控制这一字段对于可交换类模型的行为...ManyToManyField类有两个经常使用的参数:through和through_fields,通过这两个参数可以十分方便地建立中间项的关联,示例代码所示: from django.db import

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

django 模型关系

返回一条Manufacturer 对象 反向查询( ForeignKey 指向的模型查询ForeignKey 所在的模型) 如果模型有一个ForeignKey,那么该ForeignKey 所指的模型实例可以通过一个管理器返回前一个有...该管理器返回的查询集可以用上一节提到的方式进行过滤和操作。...clear() #从关联的对象集中删除所有的对象 多对多 要实现多对多,就要使用django.db.models.ManyToManyField类,和ForeignKey一样,它也有一个位置参数,用来指定和它关联的...(Group) 建议以被关联模型名称的复数形式做为 ManyToManyField 的名字 在哪个模型设置 ManyToManyField 并不重要,在两个模型任选一个即可——不要在两个模型中都设置...一对一 一对一是通过django.db.models.OneToOneField来实现的,被关联的Model会被加上 Unique的限制,OneToOneField要一个位置参数,与模型关- 联的类

1.4K30

Django学习笔记之Django ORM Aggregation聚合详解

在当今根据需求而不断调整而成的应用程序,通常不仅需要能依常规的字段,字母顺序或创建日期,来对项目进行排序,还需要按其他某种动态数据对项目进行排序。Djngo聚合就能满足这些要求。...在第一个查询,注解在过滤器之前,所以过滤器对注解没有影响。...在第二个查询过滤器在注解之前,所以,在计算注解值时,过滤器就限制了参与运算的对象的范围 order_by() 可以根据聚合值进行排序 >>> Book.objects.annotate(num_authors...就不是在原始的 QuerySet 返回结果对每个对象添加注解,而是根据定义在 values() 从句中的字段组合对先结果进行唯一的分组,再根据每个分组算出注解值,这个注解值是根据分组中所有的成员计算而得的...这是因为默认排序项的name也是一个分组项,所以这个查询会根据非重复的(data,name)进行分组,而这并不是你本来想要的结果。

1K20

Django】聚合在Django的详细解析以及运用在企业级项目里的方法

Django的查询语法提供了一种描述所有藏书的方法。 传递给聚合()的参数描述了要计算的聚合值。在此示例,将计算Book模型上价格字段的平均值。...annotate()子句的输出是QuerySet;此QuerySet由其他QuerySet操作修改,包括filter()',order_by(),您甚至可以进行其他调用来注释()。...应用于公共模型字段的任何过滤器()(或exclude())都将具有约束被认为是聚合的对象的效果。 当使用annotate()子句时,过滤器具有约束注释对象计算的效果。...在第一个查询,注释优先于过滤器,因此过滤器不会影响注释。Distinct=True用于避免查询错误。 第二个查询查询每个出版商得分超过3的图书数量。...过滤器优先于注释,因此过滤器限制了计算注释时要考虑的对象。 第一个查询请求具有至少一本得分大于3的书的平均得分。第二个查询仅请求得分超过3的作者书的平均分数。

2K40

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

获取对象 通过模型的Manager构造一个QuertSet,来从你的数据库获取对象。 QuerySet表示你数据库取出来的一个对象的集合。...你可以一直添加过滤器,在这个过程Django 不会执行任何数据库查询,除非 QuerySet 被执行....1.0新增的: 请查看版本记录 如果你的过滤是基于 ManyToManyField 或是逆向 ForeignKeyField 的,你可能会对下面这两种情况感兴趣。...第二个过滤器在此基础上从这些 blogs 检索与第二种 entry 也相关联的 blog。第二个过滤器选择的 entry 可能与第一个过滤器所选择的完全相同,也可能不同。...在过滤引用 model 的字段(Filters can reference fields on the model) 这部分是 Django 1.1 新增的: 请查看版本记录 在上面所有的例子

4.3K20

django后台管理-admin

0922自我总结 django后台管理-admin 一.模型注册 admin.py 注册方式一: #在对于注册的app的admin文件中导入模型然后注册模型 admin.site.register(导入的模型类...list_filter =('trouble', 'go_time', 'act_man__user_name', 'machine_room_id__machine_room_name') #过滤器...'net', 'mark') #搜索字段 date_hierarchy = 'go_time' # 详细时间分层筛选 时间相关字段 此处注意: 使用 date_hierarchy 进行详细时间筛选的时候...一般ManyToManyField多对多字段用过滤器;标题等文本字段用搜索框;日期时间用分层筛选。 过滤器如果是外键需要遵循这样的语法:本表字段__外键表要显示的字段。...:“user__user_name” 3、颜色显示 from django.db import models from django.contrib import admin from django.utils.html

84710

第 03 篇:创建 Django 博客的数据库模型

当然 django 还为我们提供了多种其它的数据类型,日期时间类型 DateTimeField、整数类型 IntegerField 等等。...# 如果你对 ForeignKey、ManyToManyField 不了解,请看教程的解释,亦可参考官方文档: # https://docs.djangoproject.com/en/2.2/...提示: 在本教程我们会教你这些类型的使用方法,但以后你开发自己的项目时,你就需要通过阅读 django 官方文档 关于字段类型的介绍[1] 来了解有哪些数据类型可以使用以及如何使用它们。...title 4 body 4 2 分类 ID 分类名 1 Django 2 Python 可以看到文章和分类实际上是通过文章数据库表 分类 ID 这一列关联的。...详细示例[3]•django ManyToManyField 简介[4]•django ManyToManyField 详细示例[5] References [1] 关于字段类型的介绍: https:/

55240

创建 Django 博客的数据库模型

当然 Django 还为我们提供了多种其它的数据类型,日期时间类型 DateTimeField、整数类型 IntegerField 等等。...# 如果你对 ForeignKey、ManyToManyField 不了解,请看教程的解释,亦可参考官方文档: # https://docs.djangoproject.com/en/1.10...在本教程我们会教你这些类型的使用方法,但以后你开发自己的项目时,你就需要通过阅读Django 官方文档 关于字段类型的介绍 来了解有哪些数据类型可以使用以及如何使用它们。...title 4 body 4 2 分类 ID 分类名 1 Django 2 Python 可以看到文章和分类实际上是通过文章数据库表 分类 ID 这一列关联的。...Django ManyToManyField 简介 Django ManyToManyField 详细示例 总结 本章节的代码位于:Step3: blog models。

1.3K60

django入门:Admin管理系统及表单(干货)

这一部分将介绍 django 自带的后台管理系统,以及如何通过表单提交数据 django admin 后台管理系统 在后台管理系统注册创建的模型 from django.contrib import admin...from blog.models import Post, Category, Tag # 在应用目录下的 admin.py 文件,对创建的模型进行注册,可以一起用列表注册,也可以分开注册 admin.site.register...:8080/admin" 打开 admin 管理系统,登录的账号密码就是我们第一部分通过命令行 createsuperuser时所创建的,登陆后我们可以找到站点管理,对模型进行管理操作 ?...admin 的显示内容,可以通过如下进行定制 @admin.register(Post) class PostAdmin(admin.ModelAdmin) list_display = ['title...admin 管理界面 为了可以和用户进行交流,我们需要获取用户的一些评论之类的,所以我们需要通过表单让用户提交信息,接下来我们将了解下 django 的表单 django 表单 存在相应模型(POST

2.8K20
领券