Django ORM的外键ForeignKey中的on_delete的参数解析

以两个模型类为例,一个是老师类,一个是学生类,学生类通过外键关联老师类,实现一(老师)对多(学生)的关联。

class Teachers(models.Model):
    """老师类"""
    name = models.CharField(max_length=10)


class Students(models.Model):
    """学生类"""
    name = models.CharField(max_length=10)
    teacher = models.ForeignKey(Teachers, on_delete=models.CASCADE)

on_delete有6个可选值,分别是:

  • CASCADE      删除级联,当父表的记录删除时,子表中与其相关联的记录也会删除。即:当一个老师被删除时,关联该老师的学生也会被删除。
  • PROTECT      子表记录所关联的父表记录被删除时,会报ProtectedError异常。即:当一个学生所关联的老师被删除时,会报ProtectedError异常。
  • SET_NULL      子表记录所关联的父表记录被删除时,将子表记录中的关联字段设为NULL,注意:需要允许数据表的该字段为NULL。
  • SET_DEFAULT      子表记录所关联的父表记录被删除时,将子表记录中的关联字段设为一个给定的默认值。
  • DO_NOTHING      子表记录所关联的父表记录被删除时,什么也不做。
  • SET()      设置为一个传递给SET()的值或者一个回调函数的返回值,该参数用得相对较少。
发布了49 篇原创文章 · 获赞 10 · 访问量 9239

猜你喜欢

转载自blog.csdn.net/heibuliuqiu_gk/article/details/103277331