基于Django类的DeleteView检查约束

时间:2017-11-15 06:20:02

标签: python django django-class-based-views cascading-deletes

在django应用程序中,有两个具有1-M关系的模型,例如: ParentChild。我需要使用DeleteView类删除Parent模型对象。在删除对象之前,我需要检查它是否有任何子对象,如果有,则返回错误消息而不是删除对象。 目前我的DeleteView,默认是:

class ParentDeleteView(DeleteView):
    model = Parent
    def get_success_url(self):
        return reverse_lazy('parent-list')

我应该使用哪些方法来检查约束?

1 个答案:

答案 0 :(得分:1)

在这种情况下,您需要覆盖delete方法。

from django.http import HttpResponseRedirect

class ParentDeleteView(DeleteView):
    model = Parent

    def delete(self, request, *args, **kwargs):
        self.object = self.get_object()
        # check if object has child if yes return error
        # otherwise
        success_url = self.get_success_url()
        self.object.delete()
        return HttpResponseRedirect(success_url)


    def get_success_url(self):
        return reverse_lazy('parent-list')