0
点赞
收藏
分享

微信扫一扫

pathon Django的关系映射




一对一    【创建】



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




pathon Django的关系映射_多对多


特殊字段选项    【必须】

on_delete - 级联删除



pathon Django的关系映射_django_02



pathon Django的关系映射_后端_03


更多参考 ​​模型字段参考 | Django 文档 | Django​​


使用oto示例:


1、先创建oto应用,然后到setting.py文件注册应用



pathon Django的关系映射_后端_04


2、创建oto模型类



pathon Django的关系映射_多对多_05


3、创建数据——使用oto的方式可以直接插入数据



pathon Django的关系映射_后端_06



pathon Django的关系映射_后端_07


一对一    【查询数据】

1、正向查询:直接通过外键属性查询,则称为正向查询



pathon Django的关系映射_后端_08


2、反向查询:没有外键属性的一方,可以调用反向属性查询到关联的另一方



pathon Django的关系映射_python_09


一对一    【定义】


一对多是表示现实事物间存在的一对多的对应关系。


一对多需要明确出具体角色,在多表上设置外键


一对一    【创建】



pathon Django的关系映射_python_10


案例代码:


创建了应用之后在seeting.py进行注册应用,然后在应用下创建模型类



pathon Django的关系映射_后端_11



一对多    【创建数据】


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】



pathon Django的关系映射_后端_12


2、反向查询 【通过publisher查询对应的所有的Book】需要用到反向属性



pathon Django的关系映射_django_13


多对多 - 定义


多对多表达对象之间多对多的复杂关系,如:每个人都有不同的学校(小学,初中,高中...),每个学校都有不同的学生...


  • mysql中创建多对多需要依赖第三张表来实现
  • Django中无需手动创建第三张表,Django自动完成


语法:在关联的两个类那个zh任意一个类中,增加:


  • 属性=models.ManyToManyField(MyModel)


多对多 - 创建


用法示例:


  • 一个作者可以出版多本图书
  • 一个图书可以被多名作者同时编写


pathon Django的关系映射_python_14


创建应用mtm然后到setting.py文件里注册



pathon Django的关系映射_后端_15


进行数据迁移后到数据库查看mtm数据表


python3 manage.py makemigrations

python3 manage.py migrate



pathon Django的关系映射_django_16



多对多 - 创建数据



pathon Django的关系映射_后端_17


from mtm.models import *
a1 = Author.objects.create(name='gong')
b1 = a1.book_set.create(title='python1')



pathon Django的关系映射_python_18



a2 = Author.objects.create(name='gyq')


a2.book_set.add(b1)



pathon Django的关系映射_python_19



多对多 - 查询数据


1、正向查询  有多对多属性的对象 查 另一方


      通过Book查询对应的所有的Author


       此时多对多属性 等价于  objects



pathon Django的关系映射_Django的关系映射_20




举报

相关推荐

0 条评论