2

我有一堆继承自一个通用基类的类。delete这个通用基类在它的方法中做了一些清理。

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

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

当我从 shell 调用 Child 上的 delete 时,我得到:

bar
foo

正如预期的那样

当我使用管理员时,似乎没有调用自定义删除功能。我错过了一些明显的东西吗?

谢谢,

多姆

ps 这显然是我正在使用的代码的简化版本,如果它包含拼写错误,请致歉。随时发表评论,我会修复它。

4

1 回答 1

9

根据文档错误报告(管理员批量删除不调用 Model.delete()的文档),管理员的批量删除不调用模型的删除功能。如果您从管理员中使用批量删除,这将解释您的问题。

从这张票上添加的文档中,建议编写一个自定义批量删除函数,该函数调用模型的删除函数。

有关此行为的更多信息,请参见此处delete()为了提高效率,批量删除操作不会调用模型的方法。

于 2009-05-19T21:54:56.033 回答