2009-05-19 23 views
2

私は共通の基底クラスから継承するクラスをたくさん持っています。この共通基本クラスは、deleteメソッドでいくつかのクリーンアップを行います。Django管理者とモデルの削除

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

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

私は私が得るシェルから子供に削除を呼び出す:私は管理者を使用する場合は、カスタムの削除機能が呼び出されるようには見えませんが期待

として

bar 
foo 

。私は明白な何かを欠いていますか

おかげで、

ドム

P.S.これは明らかに私が使用しているコードの簡略化されたバージョンです。コメントを残して、私はそれを修正して自由に感じる。

答えて

9

thisドキュメントのバグレポート(Document that the admin bulk delete doesn't call Model.delete())によると、管理者のバルク削除は、モデルのdelete関数を呼び出すことはありません。管理者から一括削除を使用している場合、これはあなたの問題を説明します。

このチケットのドキュメントが追加されたので、モデルの削除機能を呼び出すカスタム一括削除機能を記述することをお勧めします。

この動作の詳細については、hereを参照してください。バルク削除アクションは効率のためにモデルのdelete()メソッドを呼び出すわけではありません。

+0

+1 ,, nice find。 –

+0

ありがとう、ちょうど私が探していたもの。 –

関連する問題