/ / Jak zastąpić czystą metodę formularza wygenerowaną przez UpdateView? - python, django, django-views

Jak zastąpić czystą metodę formularza wygenerowanego przez UpdateView? - python, django, widoki django

Czy możliwe jest zastąpienie a clean method formy generowanej przez Widok klasowy - UpdateView?

W form, Zastąpiłbym clean metoda sprawdzania, czy pierwsze lub drugie pole jest wypełnione.

Formularz wyglądałby następująco:

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

Widok:

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

Odpowiedzi:

3 dla odpowiedzi № 1

Możesz sprawić, aby Twój widok używał Twojego formularza, ustawiając form_class.

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