0
刪除管理界面中的對象時,我想防止刪除相關對象。Django:如何讓管理員不刪除相關對象?
class ObjectToDelete(models.Model):
timestamp = models.DateTimeField()
class RelatedObject(models.Model):
otd = models.ForeignKey('app.ObjectToDelete', null=True, blank=True)
由於RelatedObject
的ForeignKey
是空的,我應該能夠將其設置爲None
,而不是刪除整個對象。這正是我想要的行爲。
我知道我可以爲此管理界面創建自定義刪除操作。
而且我也知道我可以製作ManyToManyField
ObjectToDelete
這也會阻止RelatedObject
的移除。但是,我不會有我想要的一對多關係。
有沒有簡單的方法來實現這一目標?
使用['SET_NULL']可能更好(https://docs.djangoproject.com/en/1.9/ref /models/fields/#django.db.models.SET_NULL),而不是'CASCADE',因爲OP不希望相關對象被刪除。 – Alasdair
@Alasdair,是的,你說得對,我們可以在這裏使用SET_NULL。但就性能而言,它們都處於數據庫級別,無法確定誰更快。 –
這不是關於哪個更快。使用'models.CASCADE'(直到Django 2.0的默認行爲)刪除相關的對象。這正是OP試圖避免的。 – Alasdair