有沒有辦法阻止用戶刪除某個類型的最後一個對象(即表中的最後一行)?他們仍然應該能夠一般地刪除這種對象,但必須確保至少有一個條目留下 - 在這種特定情況下,至少有一個條目與用戶相關聯。在Django admin中,如何防止刪除類型的最後一個對象
我試圖重寫模式的刪除功能:
def delete(self, *args, **kwargs):
others = Presentation.objects.filter(user=self.user).exclude(pk=self.pk)
if len(others) < 1:
pass
else:
super(Presentation, self).delete(*args, **kwargs)
這工作,但用戶被告知缺失實際上是成功的。我寧願要顯示錯誤消息,例如驗證失敗時。但是,據我所知,驗證只適用於保存。
這沒有奏效。 'clean()'顯然是在保存時調用的,而不是在刪除時調用。 – pholz 2012-02-14 09:21:07
是的,這是有道理的。沒有理由清除任何刪除。我的錯。 – 2012-02-14 14:14:58
我已經更新了我的答案 – 2012-02-14 14:24:10