一对一 【创建】
  一对一是表示现实事物间存在的一对一的对应关系。
 
 
  
 特殊字段选项 【必须】
on_delete - 级联删除
 
  
 
  更多参考
  模型字段参考 | Django 文档 | Django
 
 
  
 使用oto示例:
  1、先创建oto应用,然后到setting.py文件注册应用
 
 
  
 
  2、创建oto模型类
 
 
  
 
  3、创建数据——使用oto的方式可以直接插入数据
 
 
  
  
 一对一 【查询数据】
1、正向查询:直接通过外键属性查询,则称为正向查询
 
 
  2、反向查询:没有外键属性的一方,可以调用反向属性查询到关联的另一方
 
 
  
 一对一 【定义】
  一对多是表示现实事物间存在的一对多的对应关系。
 
 
 
  一对多需要明确出具体角色,在多表上设置外键
 
 
  
 一对一 【创建】
 
 案例代码:
  创建了应用之后在seeting.py进行注册应用,然后在应用下创建模型类
 
 
  
  
 一对多 【创建数据】
   from otm.models import *
  
 
  
   p1 = Publisher.objects.create(name='中信出版社')
  
 
  
   b1 = Book.objects.create(title='Python1',publisher=p1)
  
 
  
   b2 = Book.objects.create(title='Python2',publisher_id=1)
  
 
 一对多 【查询数据】
1、正向查询 【通过Book查询Publisher】
 
 2、反向查询 【通过publisher查询对应的所有的Book】需要用到反向属性
 
 多对多 - 定义
 多对多表达对象之间多对多的复杂关系,如:每个人都有不同的学校(小学,初中,高中...),每个学校都有不同的学生...
 
-  
  mysql中创建多对多需要依赖第三张表来实现
-  
  Django中无需手动创建第三张表,Django自动完成
 语法:在关联的两个类那个zh任意一个类中,增加:
 
-  
  属性=models.ManyToManyField(MyModel)
多对多 - 创建
 用法示例:
 
-  
  一个作者可以出版多本图书
-  
  一个图书可以被多名作者同时编写
 
 创建应用mtm然后到setting.py文件里注册
 
 
 进行数据迁移后到数据库查看mtm数据表
 
python3 manage.py makemigrationspython3 manage.py migrate
 
多对多 - 创建数据
 
from mtm.models import *
a1 = Author.objects.create(name='gong')
b1 = a1.book_set.create(title='python1') 
  a2 = Author.objects.create(name='gyq')
 
 
 
  a2.book_set.add(b1)
 
 
 
多对多 - 查询数据
 1、正向查询  有多对多属性的对象 查 另一方
 
       通过Book查询对应的所有的Author
 
        此时多对多属性 等价于  objects
 
 



















