Skip to main content
 首页 » 编程设计

python之如何覆盖 UpdateView 生成的表单的 clean 方法

2025年05月04日24jirigala

是否可以覆盖由 Class Based View - UpdateView 生成的表单的 clean 方法?

在 form 中,我会覆盖 clean 方法来检查第一个或第二个字段是否已填充。

表格是这样的:

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

请您参考如下方法:

您可以通过设置 form_class 使您的 View 使用您的表单.

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