我有一堆继承自公共基类的类。这个公共基类在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
按预期
当我使用admin时,似乎没有调用自定义删除功能。我错过了一些明显的东西吗?
谢谢,
的Dom
P.S。这显然是我正在使用的代码的简化版本,如果它包含拼写错误,则道歉。随意发表评论,我会解决它。
答案 0 :(得分:9)
根据this文档错误报告(Document that the admin bulk delete doesn't call Model.delete()),管理员的批量删除不会调用模型的删除功能。如果您正在使用管理员批量删除,这可以解释您的问题。
从这个故障单上添加的文档中,建议是编写一个自定义批量删除函数来调用模型的删除函数。
有关此行为的进一步信息是here。为了提高效率,批量删除操作不会调用模型的delete()
方法。