django-8-django模型系统
<<<表关系实现>>>
1.OneToOne
models.OneToOneField('another_table', on_delete=models.CASCADE)
2.OneToMany
models.ForeignKey('another',on_delete=models.SET_NULL, null=True)
3.ManyToMany
ManyToMany('another_table',through='Enroll')
还要借助一个中间表Enroll
1.OneToOne
models.OneToOneField('another_table', on_delete=models.CASCADE)
2.OneToMany
models.ForeignKey('another',on_delete=models.SET_NULL, null=True)
3.ManyToMany
ManyToMany('another_table',through='Enroll')
还要借助一个中间表Enroll
OnenToMany('one', on_delete=models.CASCADE)
OnenToMany('another', on_delete=models.CASCADE)
OnenToMany('another', on_delete=models.CASCADE)
<<<关联表的数据操作>>>
1.OneToMany
一个模型如果定义了一个外键字段,通过这个模型对外键的操作就叫【正向】
1.OneToMany
一个模型如果定义了一个外键字段,通过这个模型对外键的操作就叫【正向】
s.grade = None 把外键删除
从grade对象反过来对和他关联的模型进行操作【反向】
table_set 反响管理器
remove(s)
clear()这两种方法都立刻马上执行
remove(s)
clear()这两种方法都立刻马上执行
set()参数传列表,先执行clear()
filter(grade__name='django')
2.ManyToMany
指定了中间表,add remove set都不能用,必须用中间表
指定了中间表,add remove set都不能用,必须用中间表
3.OneToOne
直接通过模型的小写就能反向操作
<<<跨表查询>>>
1.查询课程表里面的男生
Course.objects.filter(studetns__sex=1)
2.查询选了python课的学生
Student.objects.filter(course__name_contains='python')
3.查询33期,选英语课的学生
Student.objects.filter(course__name__contains='english', grade__num__contains='33')
4.查询学费小于3000的学生
Student.objects.filter(enroll__pay__lt=3000)
5.查询某一期学习python的学生
Grade.objects.filter(student__course__name__contains='python')
1.查询课程表里面的男生
Course.objects.filter(studetns__sex=1)
2.查询选了python课的学生
Student.objects.filter(course__name_contains='python')
3.查询33期,选英语课的学生
Student.objects.filter(course__name__contains='english', grade__num__contains='33')
4.查询学费小于3000的学生
Student.objects.filter(enroll__pay__lt=3000)
5.查询某一期学习python的学生
Grade.objects.filter(student__course__name__contains='python')