一对一 【创建】
 
 
一对一是表示现实事物间存在的一对一的对应关系。
 
 
  

  
特殊字段选项 【必须】
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 makemigrations
python3 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
 
 

 
 
 










