django - 我们如何在基于 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 中在基于函数的视图中实现验证时。
对于基于类的视图,有什么吗?
解决方案
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 文件中使用这种方式
推荐阅读
- angular - Angular Visual Studio Delete Nested Component
- node.js - Node.js spawn child process and get terminal output to log realtime
- java - Byte Buddy: Annotation and Class[] property with a byte buddy class
- kotlin - Kotlin - 替换类委托 - 具有相同功能的多个类不同的签名
- java - 使用 iText 的 Java PDF 数字签名可见但不可打印
- javascript - 比较 RxJS 中的集合键?
- python - 使用列表项和子字典访问嵌套字典中的项
- npm - 如何使用 devinstall 和 devuninstall 脚本?
- javascript - 根据循环增量数计算 Number
- mysql - A sql query to fetch data of both table even if related id is not available