2009-05-19 18 views
2

Ich habe eine Reihe von Klassen, die von einer gemeinsamen Basisklasse erben. Diese allgemeine Basisklasse wird in ihrer delete Methode aufgeräumt.Django Admin & Model Löschung

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

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

Als ich auf das Kind aus der Shell löschen nenne ich bekommen:

bar 
foo 

als

erwartet

Wenn ich den Admin verwenden, löschen Sie die benutzerdefinierten Funktionen scheinen nicht genannt werden . Fehle ich etwas Offensichtliches?

Danke,

Dom

P. S. Dies ist offensichtlich eine vereinfachte Version des Codes, den ich verwende, Entschuldigung, wenn sie Tippfehler enthält. Fühlen Sie sich frei, einen Kommentar zu hinterlassen und ich werde es beheben.

Antwort

9

Nach this Dokumentation Fehlerbericht (Document that the admin bulk delete doesn't call Model.delete()), der Admin-Bulk- löschen rufen nicht die Löschfunktion des Modells. Wenn Sie Massenlöschung vom Administrator verwenden, würde dies Ihr Problem erklären.

Aus der zusätzlichen Dokumentation zu diesem Ticket wird empfohlen, eine benutzerdefinierte Bulk-Delete-Funktion zu schreiben, die die Löschfunktion des Modells aufruft. Weitere Informationen zu diesem Verhalten finden Sie unter here. Die Massenlöschaktion ruft aus Effizienzgründen nicht die delete()-Methode des Modells auf.

+0

+1 ,, nice find. –

+0

Danke, genau das, was ich gesucht habe. –