删除没有外键警告的 django 模型类对象
Posted
技术标签:
【中文标题】删除没有外键警告的 django 模型类对象【英文标题】:Deleting a django model class object without foreignkey warning 【发布时间】:2019-05-09 06:28:00 【问题描述】:我在 mysql 中有两个用 django 模型创建的表。一个是学生模型,另一个是考勤模型。
class Attendance(BaseModel):
stu = models.ForeignKey(Students, verbose_name=_("Student"))
我没有将“on_delete=models.PROTECT”放在出勤类的 stu 中,因为如果这个学生在出勤中被定义为学生类的外键,我需要能够在没有保护警告的情况下删除一个学生对象。
现在,当我删除学生对象时,考勤中的外键连接记录也被删除。
我想做的是,我想在没有警告的情况下删除学生对象。但我希望出勤中连接的外键记录应该留在那里以获取历史报告。
Students 对象将被删除而不发出警告,并且出勤中的外键相关行不会被删除。
【问题讨论】:
【参考方案1】:根据您的描述,您似乎应该使用on_delete=models.SET_NULL
。通过这种方法,外键值不会被删除,而是将它们与已删除项的关系 id 设置为 null。
因此 Student 对象将被删除,stu
值将设置为 Null。
【讨论】:
已解决。谢谢! 任何时候我的朋友 :)以上是关于删除没有外键警告的 django 模型类对象的主要内容,如果未能解决你的问题,请参考以下文章
django的模型类管理器-----------数据库操作的封装
django - 模型 unicode() 显示外键对象属性