2009-05-19 68 views
2

我有一堆類從一個共同的基類繼承。這個通用基類在其delete方法中做了一些清理。Django Admin&Model Deletion

class Base(models.Model): 
    def delete(self): 
     print "foo" 

class Child(Base): 
    def delete(self): 
     print "bar" 
     super(Child, self).delete() 

當我打電話從外殼上的兒童刪除我得到:

bar 
foo 

預期

當我使用管理,自定義刪除功能似乎沒有得到所謂的。我錯過了明顯的東西嗎?

感謝,

大教堂

附:這顯然是我正在使用的代碼的簡化版本,如果它包含錯別字,則表示歉意。隨時留下評論,我會解決它。

回答

9

根據this文檔錯誤報告(Document that the admin bulk delete doesn't call Model.delete()),管理員的散裝刪除不調用模型的刪除功能。如果您使用管理員批量刪除,這將解釋您的問題。

從這張票上添加的文檔,建議是編寫一個自定義的批量刪除函數,調用模型的刪除函數。

有關該行爲的更多信息是here。爲了提高效率,批量刪除操作不會調用模型的delete()方法。

+0

+1 ,,很好找。 – 2009-05-19 22:10:41