Models(四)数据级联之外键(1:N)

models.py
views.py• models.py • *grade.html from django.db import models # Create your models here. urts.py students.html hel 10 —class pclass s S s Grade (models. Model) : - models. name - student (models. Model) = models. name a e = models. Inte grade = models. ForeignKey(Grade, models. CASCADE)
ForeignKey()外键实际上是一种多对一的关系(主表是多,从表是一)
-必须参数:表名、on_delete,
on_delete指的是通过ForeignKey连接起来的对象被删除后,当前字段怎么变化。
on_delete常见选项有:
-models.CASCADE,对就对象删除后,包含ForeignKey的字段也会被删除
 
-models.PROTECT,删除时会引起ProtectedError
 
-models.SET_NULL,注意只有当当前字段设置null设置为True才有效,此情况会将ForeignKey字段设置为null
 
-models.SET_DEFAULT ,同样,当前字段设置了default才有效,此情况会将ForeignKey 字段设置为default 值
 
-moels.SET,此时需要指定set的值
 
-models.DO_NOTHING ,什么也不做
 
执行迁移后会生成两个表:
E s_name s_age 1 2 ZLC 2 3 YZY 3 4 Jerry92 4 5 Jerry90 5 6 Jerrys 6 7 Jerry24 7 8 Jerry51 8 9 Jerrya5 9 10 Jerry15 10 11 Jerry88 11 12 Jerryll 12 13 Jerry5 13 s_grade_id 1 1 1 1 1 1 1 1 1 1 1 1 1 1 2 1 1 1 1 1 1 2 1 2 2
                 student
2 Mid I 2 g_name pythonoı python02
        grade表
 
根据外键(从表)查询
# students/grade - def grade = Grade. objects . ge ( -2) students = rade student set a dic - { •students': students # f om o return render (request, •grade . html • , grade->students rontext=dic)
对象students代表的是表student表)中外键ids_grade_id为某值2的数据
查询结果
python 3.6.9 (default, NOV 7 2019, [GCC 8.3. O] on Linux Type "help", "copyright", "credits" (Interactiveconsole) from Two. models import Grade grade = Grade. objects. ge ( k=2) students = grade. for i in students: print(i.s_name) Zl_c Jerry15 Jerryll or "license" for more information.
输出是在grade表中id为2的班级中的同学

猜你喜欢

转载自www.cnblogs.com/xiaoqichaoren/p/12942133.html