如何在Django 1.7中为ModelForm创建有效性验证?

2024-04-23 19:51:46 发布

您现在位置:Python中文网/ 问答频道 /正文

我很难让我的验证出现。首先,我想知道这些验证是否应该在型号.py或者表格.py?你知道吗

通过研究,我发现可以使用经过清理的数据和验证逻辑来创建验证。我还发现了一个可以在模型中使用的验证器——也许还有模型表单?你知道吗

下面是我编写的一些代码,在视图中看不到验证。任何帮助都将不胜感激。你知道吗

class ServiceForm(forms.ModelForm):
    category= forms.ChoiceField(choices= CATEGORIES)
    service_description= forms.CharField(widget=forms.Textarea)
    more_service_info= forms.CharField(widget=forms.Textarea)

    class Meta:
        model = Service
        fields = ('service_name', 'category', 'address', 'city', 'state', 'zipcode',
                'phone', 'website_link', 'service_description', 'more_service_info',
                'price', 'pub_date',)

    def clean_service_description(self):
        data = self.cleaned_data['service_description']
        if len(data) < 10:
            raise forms.ValidationError("Description should be greater than 10 characters")
            return data

编辑这是我的视图代码

def create(request):
    if request.POST:
        form= ServiceForm(request.POST)
        if form.is_valid():
            service_obj = form.save(commit=False)
            service_obj.user_id = request.user.id
            service_obj.save()

            return render_to_response('services/service_created.html', 
                              {'service': Service.objects.get(id=service_obj.id)})
    else:
        form = ServiceForm()

    args= {}
    args.update(csrf(request))
    args['form'] = form

    return render_to_response('services/create_service.html', args )

Tags: 代码py模型form视图idobjdata