级联删除w /自定义模型删除方法

时间:2015-04-24 19:35:32

标签: django django-models django-queryset

我的delete上有一个自定义Model方法,我确保在使用以下方法调用QuerySet上的delete时正确调用: Custom delete method on queryset

当Django执行级联删除时,这似乎不起作用。在这种情况下,ORM会在常规_raw_delete上调用QuerySet,从而绕过我的自定义删除方法。

如何防止这种情况发生?

这个问题似乎是因为它使用了_base_manager而不是_default_manager

def related_objects(self, related, objs):
  return related.related_model._base_manager.using(self.using).filter(
      **{"%s__in" % related.field.name: objs}
  )

1 个答案:

答案 0 :(得分:1)

看起来我需要将其添加到QuerySet

 def _raw_delete(self, using):
        self.delete()
    _raw_delete.alters_data = True

并在use_for_related_fields = True上设置Manager