Django之Model操作之一对多外键(ForeignKey)正反调用【ORM篇五】
上一篇:Django之Model操作之一对一外键(OneToOneField\ForeignKey)正反调用【ORM篇四】 点击跳转
目录篇:Django之model操作ORM目录篇 点击跳转
下一篇:Django之Model操作之多对多(ManyToMany)正反调用【ORM篇六】点击跳转
目录
ForeignKey
一对多介绍
一对多关系是最普通的一种关系。在这种关系中,A 表中的一行可以匹配 B 表中的多行,但是 B 表中的一行只能匹配 A 表中的一行。
简单解释:
1.读高中,一个学生属于某一个班,但是某个班却可以有多个学生 ,这里就有两个表:学生表、班级表。
2.所以学生属于哪个班级我们就需要就行外键关联,以后通过该外键我们就可以做到该学生属于哪个班
注意:只要关联的对象有关联对象,关联对象的关联对象也有关联对象,都可以动过第1对象调取关联对象的关联对象的关联对象..以此类推
一对多字段写在哪个表?
1.一个班级只可以有一个合同,一个合同可以多个班级,所以是班级表字段关联合同表(写在班级表)
2.一张缴费表只允许一个报名后的客户缴费,一个报名后的客户可以缴费多张表,所以是缴费表字段关联报名表(写在缴费表)
3.一张客户报名表只可以填写一个客户,一个客户报名表可以写多张报名表(所以是报名表客户字段关联客户表)
4.一张客户报名表允许一个销售负责,但是一个销售可以负责多张客户报名表(所以是报名表销售字段关联销售表)
5.一张客户报名表值允许报一个班级,但是一个班级可以有多张客户报名表(所以是客户报名表的班级字段关联班级表)
具体示例
实战Django之Model操作之一对多外键(ForeignKey)正反调用 https://blog.csdn.net/Burgess_zheng/article/details/86593203
表类
路径:project/app/models.py
[code]from django.db import models class A(models.Model): name = models.CharField(max_length=34) class B(models.Model): name = models.CharField(max_length=34) a_key = models.ForeignKey("A",related_name='n',on_delete=models.CASCADE)表数据
A表
B表
外键调用方式
路径:project/app/views.py
[code]from app import models def models_handle(request): A_obj = models.A.objects.filter()#获取全部或者匹配的列表形式 A_obj = models.A.objects.all()#获取全部列表 A_obj = models.A.objects.get(id=1)#一个queryset对象 #如果匹配不到,或者匹配的超出一个报错 A_obj = models.A.objects.first() #获取该表第一个queryset对象 B_obj = models.B.objects.first() #正向调取:(通过表内外键字段 “a_key”) B_obj.a_key.name #得到结果:小红 #反向调取:(通过外键字段related_name反向操作) A_obj.n.all()[0].name #得到结果:小明 #插入:如果创建数据库表B表没有related_name该参数反向调取:(”B表名小写” + “_set”) #A_obj.b_set.all()[0].name #得到结果:小明
上一篇:Django之Model操作之一对一外键(OneToOneField\ForeignKey)正反调用【ORM篇四】 点击跳转
目录篇:Django之model操作ORM目录篇 点击跳转
下一篇:Django之Model操作之多对多(ManyToMany)正反调用【ORM篇六】点击跳转
- Django之Model操作之多对多(ManyToMany)正反调用【ORM篇六】
- 实战Django之Model操作之多对多(ManyToMany)正反调用
- Python3之外部文件调用Django程序操作model等文件实现
- Django外键(ForeignKey)操作以及related_name的作用
- django数据库操作-增删改查-多对多关系以及一对多(外键)关系
- Django基础之Model操作
- django(7)modelform操作及验证、ajax操作普通表单数据提交、文件上传、富文本框基本使用
- Django之Model操作
- MVVM模式的View与ViewModel的三大通讯方式:Binding Data(实现数据的传递)、Command(实现操作的调用)和Attached Behavior【转】
- django 外键操作
- django model操作
- django model操作
- PythonWeb开发Django框架学习(九)使用Model类操作数据库数据
- Django 速成笔记(3)--Django models 数据库操作-增删改查-多对多关系以及一对多(外键)关系
- Django(八)下:Model操作和Form操作、序列化操作
- django 模型model与数据库3——高级操作(外联,多对多,修改字段)
- Django-Model操作数据库(增删改查、连表结构)
- Django model查询之F,Q操作
- 【Django】Django model与数据库操作对应关系(转)
- Django-Model操作数据库(增删改查、连表结构)