2016-08-10 10 views
0

によって生成されたフォームのclean methodを上書きすることはできますか? - UpdateViewUpdateViewによって生成されたフォームのクリーンメソッドをオーバーライドする方法は?

formでは、最初のフィールドか2番目のフィールドのどちらが満たされているかを確認するために、cleanメソッドをオーバーライドします。あなたはあなたのビューがform_classを設定して、フォームを使用することができます

class EditOrderView(UpdateView): 
    model = Job 
    fields = ['language_from', 'language_to', 'level', 'short_description', 'notes', 
       'first_field', 'second_field'] 
    template_name = 'auth/jobs/update-order.html' 

    def get_object(self, queryset=None): 
     return get_object_or_404(self.model, pk=self.kwargs["pk"], customer=self.request.user) 

    def get_success_url(self): 
     return '/my-orders/' 

    def form_valid(self, form): 
     self.order = form.save() 
     email.AdminNotifications.edited_order(self.order) 
     return HttpResponseRedirect(self.get_success_url()) 

答えて

2

class MyForm(forms.ModelForm): 
    ... 
    def clean(self): 
     super(MyForm,self).clean() 
     if bool(self.cleaned_data['first_field'])== bool(self.cleaned_data['first_field']): 
      raise ValidationError("Please, fill the first or second field") 

ビュー:

フォームは次のようになります。

class EditOrderView(UpdateView): 
    model = Job 
    form_class = MyForm 
    ...