2009-05-19 8 views
2

J'ai un tas de classes qui héritent d'une classe de base commune. Cette classe de base commune effectue un nettoyage dans sa méthode 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() 

Quand j'appelle supprimer sur l'enfant de la coquille que je reçois:

bar 
foo 

comme prévu

Quand j'utilise l'administrateur, la coutume supprimer les fonctions ne semblent pas obtenir appelé . Est-ce que je manque quelque chose d'évident?

Merci,

Dom

P.S. C'est évidemment une version simplifiée du code que j'utilise, des excuses si elle contient des fautes de frappe. N'hésitez pas à laisser un commentaire et je le réparerai.

Répondre

9

Selon this rapport de bogue de documentation (Document that the admin bulk delete doesn't call Model.delete()), en vrac suppression de l'administrateur ne remet pas la fonction de suppression du modèle. Si vous utilisez la suppression groupée de l'administrateur, cela explique votre problème. À partir de la documentation ajoutée sur ce ticket, il est conseillé d'écrire une fonction de suppression groupée personnalisée qui appelle la fonction de suppression du modèle.

Plus d'informations sur ce comportement est here. L'action de suppression groupée n'appelle pas la méthode delete() du modèle pour des raisons d'efficacité.

+0

+1 ,, belle trouvaille. –

+0

Merci, exactement ce que je cherchais. –

Questions connexes