2015-04-24 50 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