在管理界面中删除对象时,我想阻止删除相关对象。
class ObjectToDelete(models.Model):
timestamp = models.DateTimeField()
class RelatedObject(models.Model):
otd = models.ForeignKey('app.ObjectToDelete', null=True, blank=True)
由于ForeignKey
中的RelatedObject
可以为空,我应该可以将其设置为None
,而不是删除整个对象。这正是我想要的行为。
我知道我可以为此管理界面创建自定义删除操作。
而且我也知道我可以在ManyToManyField
中设置ObjectToDelete
,这也会阻止删除RelatedObject
。但后来我不会有我想要的一对多关系。
有没有一种简单的方法可以达到这个目的?
答案 0 :(得分:1)
为外键设置on_delete
选项。如果要在删除相关对象时将值设置为None
,请使用SET_NULL
:
models.ForeignKey('app.ObjectToDelete', on_delete=models.SET_NULL)
这些规则适用于删除对象,无论是在管理面板中执行还是直接使用Model实例。 (但如果直接使用SQL中的底层数据库,它将无法生效。)