一对一 【创建】
一对一是表示现实事物间存在的一对一的对应关系。
特殊字段选项 【必须】
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