0

djangoアプリケーションでは、1-Mの関係を持つ2つのモデルがあります。 ParentおよびChild。​​クラスを使用して、親モデルオブジェクトを削除する必要があります。オブジェクトを削除する前に、子オブジェクトがあるかどうかを確認し、存在する場合はオブジェクトを削除する代わりにエラーメッセージを返します。 現在、私のDeleteView、デフォルトのようなものです:DjangoクラスベースのDeleteViewチェック制約

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

どの方法私は制約をチェックするために実装する必要がありますか?

答えて

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')