Django 管理员与模型删除
我有一堆类,它们都是从一个共同的基类继承而来的。这个共同的基类在它的 delete
方法里做了一些清理工作。
class Base(models.Model):
def delete(self):
print "foo"
class Child(Base):
def delete(self):
print "bar"
super(Child, self).delete()
当我在命令行中对子类调用 delete 时,我得到了:
bar
foo
这正是我预期的结果
但是当我使用管理员权限时,自定义的删除函数似乎没有被调用。我是不是漏掉了什么明显的东西?
谢谢,
Dom
附言:这显然是我使用的代码的简化版本,如果里面有错别字请见谅。欢迎留言,我会进行修正。
1 个回答
9
根据这个文档中的错误报告(说明管理员的批量删除不调用模型的delete()函数),管理员的批量删除功能实际上并不会调用模型的删除函数。如果你在管理员界面使用批量删除,这可能就是你遇到问题的原因。
在这个问题的补充文档中,建议你自己写一个批量删除的函数,这个函数会调用模型的删除函数。
关于这种行为的更多信息可以在这里找到。批量删除操作为了提高效率,并不会调用模型的delete()
方法。