首页 > 解决方案 > 我们如何在基于 django 类的视图中实现自定义验证(创建和更新视图)

问题描述

我想在基于类的视图中使用唯一性验证。

在这里,我有 createView,我想在表单发布时添加 part_no 唯一性验证。

我们怎样才能做到这一点?

任何解决方案。

视图.py

class SparePartsCreate(CreateView): 
    template = 'maint/spareparts_form.html'
    model = SpareParts
    fields = ['name', 'description', 'part_no']
    success_url = reverse_lazy('spare_parts')

    form.py
    class SparePartForm(forms.ModelForm):
        name = forms.CharField(required=True, label='Spare Part Name')
        description = forms.CharField(required=True, label='Spare Part Description')
        part_no = forms.CharField(required=True, label='Spare Part Number', max_length=6)
        class Meta:
            model = SpareParts
            fields = ['name','description','part_no']
        def __init__(self, *args, **kwargs):
            self.request = kwargs.pop('request', None)
            super(SparePartForm, self).__init__(*args, **kwargs)

当我们在 clean 方法下在 form.py 中在基于函数的视图中实现验证时。

对于基于类的视图,有什么吗?

标签: djangodjango-modelsdjango-rest-frameworkdjango-forms

解决方案


def clean_part_no(self):
    part_no = self.cleaned_data.get('part_no')
    qs = SpareParts.objects.filter(part_no=part_no)
    if qs.exists():
        raise forms.ValidationError('This part_no already taken, please use a different one.')
    return part_no

在您的 forms.py 中使用这种方式或unique=True在 models.py 文件中使用这种方式


推荐阅读