在没有外键警告的情况下删除 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。
我在 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。