在没有外键警告的情况下删除 Django 模型 class 对象

Deleting a django model class object without foreignkey warning

我在 MySql 中有两个表是用 django 创建的 models.One 是 Students 模型,另一个是 Attendance 模型。

class Attendance(BaseModel):
    stu = models.ForeignKey(Students, verbose_name=_("Student"))

我没有将 "on_delete=models.PROTECT" 放入 Attendance class 中,因为我需要能够在没有保护警告的情况下删除 Student 对象,如果此 Student 在 Attendance 中定义为来自 Students 的外键class.

现在当我删除一个学生对象时,考勤中的外键连接记录也被删除。

我想做的是,我想在没有警告的情况下删除学生对象。但我希望考勤中连接的外键记录应该留在那里用于历史报告。

Students对象会在没有警告的情况下被删除,Attendance中的外键相关行不会被删除。

根据你的描述看来你应该使用on_delete=models.SET_NULL。通过这种方法,外键值不会被删除,而是它们与已删除项目的关系 ID 将被设置为空。

因此 Student 对象将被删除并且 stu 值将设置为 Null。