2009-05-19 4 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 

, как и ожидалось

Когда я использую администратора, пользовательские функции удаления, кажется, не дозвонились , Мне что-то не хватает?

Спасибо,

Дом

P.S. Это, очевидно, упрощенная версия кода, который я использую, извинения, если он содержит опечатки. Вы можете оставить комментарий, и я исправлю это.

ответ

9

Согласно this отчету документации об ошибке (Document that the admin bulk delete doesn't call Model.delete()), администраторский насыпной удаление не вызывает функцию удаления модели. Если вы используете массовое удаление из администратора, это объяснит вашу проблему.

Из дополнительной документации по этому билету советуется написать пользовательскую функцию массового удаления, которая вызывает функцию удаления модели.

Дополнительная информация по этому вопросу: here. Эффект массового удаления не вызывает метод модели delete() ради эффективности.

+0

+1 ,, nice find. –

+0

Спасибо, именно то, что я искал. –

Смежные вопросы