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

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

0904自我总结 django模型中有关系的表删除相关设置 一.一对一 例如有Author、AuthorDetail两表 author = models.OneToOneField(to='Author...related_name(detail),详情找作者用 字段(author) 3)db_constraint断开表关联,on_delete规定逻辑关联删除动作,models.CASCADE级联删除...,书删除没有任何影响 2)出版社找书用 related_name(books),书找出版社 字段(publish) 3)db_constraint断开表关联,on_delete规定逻辑关联删除动作...,models.DO_NOTHING关联无动作 三.以外字段关联 1)断关联,删除关联表记录,键值置空 db_constraint=False, on_delete=models.SET_NULL...,反向字段related_name 3)db_constraint断开表关联,on_delete不存在(不设置,本质在第三张表中设置,且一定是级联)

3K20

Django ORM 多表操作

目录 Django ORM 多表操作 表模型 表关系 创建模型 逆向到表模型 插入数据 ORM 添加数据(添加) 一对多( ForeignKey) 一对一 (OneToOneFeild) 多对多...ORM 多表操作 表模型 图书表 出版社表 作者表 作者详情表 表关系 一对一:一对一推荐建在查询频率高的一方 一对多:字段建在多的一方 多对多:字段建在查询频率多的一方,在Django第三张表不需要创建...,自动创建 ps:字段不需要写表名_id后面的_id,ORM创建的时候自动添加了_id,以及以虚拟字段的形式存在 创建模型 '''models.py''' from django.db import...6、若有模型类存在外,创建数据时,要先创建关联的模型类的数据,不然创建包含模型类的数据时,的关联模型类的数据会找不到 逆向到表模型 插入数据 ps:插入几条数据方便操作 ORM...,去从该表的角度查另外的表,就是正向 反向:从没有表去查另外相关联的表,就是反向 口诀: 正向查询按字段 反向查询按表名小写 注意: 正向:属性名 反向:小写类名加 _set 反向查询的时候查询的对象可能有多个的情况加

1.7K20

Django之ORM

(school,on_delete=models.CASCADE) 在建表时为school添加约束,在数据库中的显示为 ?...这里的id是自动创建的,school_id是school添加产生的 如果想要与另一张表的其他字段添加,需要在加上参数to_filed=’字段名’,同时这个字段必须是unique=True 2.一对一...除了这种方式也可以手动创建一个表,手动添加两个来实现多对多。...’__’进行的查找 一对多 school_name为对象的字段 school为student表中设置的字段 student1=student.objects.filter(id=2).values...1)) 相当于用Q将条件封装,在Q对象之间使用&或者|或者~ 如果想将普通发关键字参数查询与Q查询一起使用,必须将关键字参数查询放到Q的后边 9.扩展查询extra Django 的查询语法难以简练地表达复杂的

1.1K30

Django ForeignKey与数据库的FOREIGN KEY约束详解

数据库在高并发的场景下使用约束会有锁问题并且使用会增加运维成本,所以很多公司都规定生产环境的数据库禁止使用。...那么不使用约束的情况下使用 Django ORM 如何实现关联查询两个表呢?这曾是困扰我很久的一个问题,今天终于找到了答案,写出来分享一下。...,使用 on_delete=models.SET_NULL 可以使删除 Province 时将关联的 City 表对应的 province_id 值设为 NULL 使用这种方式不会破坏 Django反向关联查询...`name` = xxx; 补充知识:关于Django模型中中定义auto_now=True 数据库中的时间并没有自动更新 django的orm关于更新数据库的方法有update和save两种方法...前提在模型中设置了auto_now=True时间戳属性,为了方便数据库自动更新时间,而 使用update更新的记录,数据库中并没有自动更新,达到我的需求。

2.5K10

Django---ORM操作大全

..关联表字段,values(字段__关联表字段) 多对多:字段.all() 反向连表操作总结:  通过value、value_list、fifter 方式反向跨表:小写表名__关联表字段...__反向是小写的表名 3....(方便反向查找) 在写ForeignKey字段的时候,如果想要在反向查找时不使用默认的 小写的表名_set,就在定义这个字段的时间加related参数!...''' #写到此处问题就来了,原来两个 对应2张表 2个主键 可以识别男女 #现在两个对应1张表 反向查找 无法区分男女了了 # object对象女.U2U.Userinfo.set...''' #写到此处问题就来了,原来两个 对应2张表 2个主键 可以识别男女 #现在两个对应1张表 反向查找 无法区分男女了了 # object对象女.U2U.Userinfo.set

6.8K100

Django之ORM数据库

(one-to-many),也被称作。...一对一:实质就是在主外(author_id就是foreign key)的关系基础上,给加了一个UNIQUE=True的属性;              一对多:就是主外关系;(foreign key...(如何处理关系的字段如一对多的publisher和多对多的authors) #一对多(ForeignKey): #方式一: 由于绑定一对多的字段,比如publish,存到数据库中的字段名叫...在“插入和更新数据”小节中,我们有提到模型的save()方法,这个方法会更新一行里的所有列。 而某些情况下,我们只需要更新行里的某几列。...publisher__city或者author__name中的publisher,author是book表中绑定的字段 #一对多和多对多在这里用法没区别 # 反向查找(条件) #

2.5K10

Django中的关系映射

级联删除的特殊字段 models.CASCADE:Django模拟SQL约束ON DELETE CASCADE,并删除包含ForeignKey的对象 注意该CASCADE会有限查找是否有关联数据,先删除管理数据...users = models.OneToOneField(UserMit,on_delete=models.CASCADE) # 一对一即users_id 对应 id 一对一映射(创建数据) ---- 无约束的模型类...UserMit # 进入Django Shell操作 create1 = UserMit.objects.create(name="henan) 有约束的模型类UserId create2 = UserId.objects.create...-b493503d6433') 反向查询 没有属性的一方,可以调用反向属性查询到关联的另一方 反向关联的属性为实例对象.引用类名(小写) 当反向引用不存在的时候,则会触发异常 当...(name="高二三班") stu1 = class1.students_set.all() # students_set 是独有的反向属性,获取多个数据,是关联的类名小写 for i in stu1

1.7K20

Django基础篇-模型表关系

一对多表关系 在 Mysql 中一对多是通过实现的,在 django 模型中通过 ForeignKeyField 类型实现。...框架篇-Django博客应用-更新首页 一对一表关系 在 Mysql 中一对一是通过加唯一实现的,在 django 模型中通过 OneToOneField 类型实现。...多对多表关系 在 Mysql 中多对多是通过中间表加联合唯一实现的,在 django 模型中通过 ManyToManyField 类型实现。中间表模型会自动创建。...例子: 学院---学生---课程---学生成绩 学院与学生一对一关系,学生与课程多对多关系 课程 学生成绩 关系表中数据的操作 : 同级目录下的 views.py from django.http import...rs.department) # 多对多的正向查询 print(rs.course.all()) cs = Course.objects.first() # 多对多的反向查询

84630

用人话讲解django模型字段认识

model(模型) 是学习 django 最重要的知识,模型设计的好坏直接影响到你后期的开发,模型的设计只能靠自身经验提高。模型准确且唯一的描述了数据,包含您储存的数据的重要字段和行为。...利用这些,Django 提供了一个自动生成访问数据库的 API,django 可以使用 ORM 操作数据库,就算你不熟悉 SQL 语法,也能很熟练的操作数据库,而且就算你后期换了数据库,项目中的关于数据库操作的代码不用更改...常见的有 字符串类型 CharField 、文本类型 TextField、整型 IntegerField、浮点型 DecimalField 、日期类型 DateTimeField,表示两张表的关系...,时间数值不变 # auto_now=True该条数据创建的时间,数据更新时,时间数值也会改变 # ForeignKey一对多,第一个参数位你要关联的数据表,比如一个班级有多个学生,就属于一对多,要放到..."多"的那张表,related_name是对外取别名,常用在django的orm反向查询中使用 项目源地址:https://github.com/zxycode-2020/django_tutrital2

1K10

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

当然如果不指定也没关系,Django会自动默认的按照一定规则生成数据模型对应的数据库表名。关于Django Meta的详细讲解可以参考该博客。...更合理) """ Django orm中外字段属性详解 在建表之前我们对外字段属性进行了解: 1)related_name在外中设置反向查询的字段名:正向找字段名,反向找related_name...值,related_name的默认值是表名小写 + _set,这就是为什么在Django中跨表反向查询时我们使用表名小写 + _set去查另一张表的数据。...例子:部门没有了,部门员工里的部门字段改为未分组部门的id SET_NULL使用的时候需要NULL=True;假设A表依赖B表,B记录删除,A表的字段重置为NULL,所以必须配合NULL=True使用...子序列化的使用方法及注意事项: 1)只能在序列化中使用 2)字段名必须是(正向反向都可以)字段,相对于自定义序列化外字段,自定义序列化字段不能参与反序列化,而子序列化必须为键名,子序列化字段不写入数据库

4.3K30

Django之ForeignKey和ManyToManyField多表查询

只有在db_constraint=True时Django model才会在数据库上建立约束, 在该值为False时不建立约束. 默认db_constraint=True....提供了一种使用双下划线__的查询语法: >>> Entry.objects.filter(blog__name='Beatles Blog') 反向查询 被索引的关系模型可以访问所有参照它的模型的实例,...如Entry.blog作为Blog的,默认情况下Blog.entry_set是包含所有参照Blog的Entry示例的查询集,可以使用查询集API取出相应的实例。...在这种情况下,必须使用through_fields 明确指定Django 应该使用哪些 through_fields 接收一个二元组('field1', 'field2'),其中field1 为指向定义...ManyToManyField 字段的模型键名称(本例中为group),field2 为指向目标模型的名称(本例中为person).

1.7K10
领券