2015-04-24 52 views
0

我有我的Model定制delete的方法,我要确保正确调用通过呼吁查询集delete时: Custom delete method on queryset级联删除W /自定义模型中删除方法

这似乎并不工作,当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} 
) 

回答

0

它看起来像我需要把它添加到QuerySet

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

,并在Manager设置use_for_related_fields = True