代码之家  ›  专栏  ›  技术社区  ›  Dominic Rodger

Django管理和模型删除

  •  2
  • Dominic Rodger  · 技术社区  · 15 年前

    我有一堆从公共基类继承的类。这个公共基类在 delete 方法。

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

    当我从shell中调用delete时,我得到:

    bar
    foo
    

    如期

    当我使用admin时,似乎不会调用自定义删除函数。我是否遗漏了一些明显的东西?

    谢谢,

    DOM

    另外,这显然是我正在使用的代码的简化版本,如果有错别字,请道歉。请留下评论,我会解决的。

    1 回复  |  直到 15 年前
        1
  •  9
  •   Dominic Rodger    15 年前

    根据 this 文档错误报告( Document that the admin bulk delete doesn't call Model.delete() 管理员的 大量的 删除不调用模型的删除函数。如果您使用管理员的批量删除,这将解释您的问题。

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

    关于这种行为的更多信息是 here . 批量删除操作不调用模型的 delete() 为了效率的方法。