您好,欢迎来到花图问答。
搜索
您的当前位置:首页(七) 模型之间的关系

(七) 模型之间的关系

来源:花图问答

模型之间的关系

(1) 一对一

实现: 使用models.OneToOneField来实现
这个字段在哪个模型都可以(人, id卡)
注意:
使用OneToOne的模型

  1. 默认会随着绑定的模型的改变去改变, 绑定的数据删除, 它也会被删除
  2. 添加的数据主表的id只能在从表中出现一次,一一对应的关系
  3. 主表的数据可以添加多个(从表绑定这主表,所以从表一个只能出现一次)
  4. 如果删除从表的数据, 主表(被绑定的模型)数据不会有任何变化

添加顺序表:

  • 先添加主表数据
  • 在添加从表
  • OneToOneField绑定的表为主表,本身表为从表
    绑定字段的on_delete属性:
  • models.CASCADE 为默认值, 主表数据删除, 从表跟随删除
  • models.PROTECT 保护模式, 主表数据有从表数据关联的时候, 主表不能删除
    id_persion = models.OneToOneField('Person', on_delete=models.PROTECT)
    
  • models.SET_NULL 设置null模式
    id_person = models.OneToOneField('Person',on_delete=models.SET_NULL,null=True)
    

注意: 需要将库删除 重新生成迁移文件(因为表结构已经设置为不为null)

(2) 一对多

使用ForeignKey去创建一对多关系
使用和一对一一样, 区别(从表可以添加多条数据)

(3) 多对多

使用ManyToManyField去创建多对多的关系
1.使用在从表中(非用户表)
2.在创建好模型 生成迁移文件的时候 会多生成一个外键表 来存储关联的id
3.表中存储的是多对多的关系的数据
4.添加关联数据的方法

  • buyer.goods_set.add(g) # 通过商品的小写模型名称_set.add(商品的对象)
  • 通过关联属性添加 g.从表的关联属性名.add(b)

5.添加删除的方法

  • add()
  • clear() 清除关联数据(将关联表中指定的数据删除)

6.俩个表都是独立的关系

Copyright © 2019-2025 huatuowenda.com 版权所有 湘ICP备2023022495号-1

违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务