Python中文
首页
教程
问答
标签
搜索
登录
注册
Django:如何验证两个字段的组合存在性?
回答此问题可获得
20
贡献值,回答如果被采纳可获得
50
分。
<p>我用的是Django模型表格。是否有人可以帮助我使用clean()验证这些字段以获取字段错误</p> <p><strong>名称</strong>字段不能在同一办公室中重复,只能在不同的办公室中重复</p> <p>form.py</p> <pre class="lang-py prettyprint-override"><code>class CreateSalesRepForm(forms.ModelForm): class Meta: model = CreateSalesRep fields = ['name', 'office'] widgets = { 'office': forms.Select(attrs={'class': 'form-control', 'placeholder': 'Enter Office'}), 'name': forms.TextInput(attrs={'class': 'form-control', 'placeholder': 'Enter Name'}) } </code></pre> <p><strong>更新的</strong>(form.py)--这是解决方案,您可以使用这些代码来验证插入和更新表单</p> <pre class="lang-py prettyprint-override"><code> def clean(self): cleaned_data = super().clean() office = cleaned_data.get("office") name = cleaned_data.get("name") duplicates = CreateSalesRep.objects.filter(office=office, name=name) if (self.instance.pk and None): duplicates = duplicates.filter(pk=self.instance.pk) if duplicates.exists(): msg = "Name already exist in office selected" self.add_error('name', msg) self.add_error('office', msg) </code></pre> <p>view.py</p> <pre class="lang-py prettyprint-override"><code>def create_salesrep(request): if request.method == "POST": form = CreateSalesRepForm(request.POST or None) if form.is_valid(): form.save() messages.success(request, 'Successfully Saved!', 'alert-success') return redirect('sales_rep') else: return render(request, 'salesrep/create_salesrep.html', {'form':form}) else: form = CreateSalesRepForm() context = {'form':form} return render(request, 'salesrep/create_salesrep.html', context) def update_salesrep(request, pk): srep = CreateSalesRep.objects.get(id=pk) form = CreateSalesRepForm(instance=srep) if request.method == "POST": form = CreateSalesRepForm(request.POST or None, instance=srep) if form.is_valid(): form.save() messages.success(request, 'Successfully Updated!', 'alert-success') return redirect('sales_rep') else: return render(request, 'salesrep/update_salesrep.html', {'form':form}) else: form = CreateSalesRepForm(instance=srep) return render(request, 'salesrep/update_salesrep.html', {'form':form}) </code></pre>
0 条评论
分类:
Python问答
请先
登录
后评论
默认排序
时间排序
1 个回答
匿名
1天前
擅长:python、mysql、java
<p>您可以尝试在模型类中执行以下操作</p> <pre><code>class Meta: unique_together = [('office', 'name')] </code></pre>
请先
登录
后评论
针对此问题:
更多的回答
关注
89
关注
收藏
1
收藏,
216
浏览
网友 提问于 2天前
相关Python问题
如何合并多个PDF文件?
5 回答
如何合并多个xarray数据变量及其坐标?
7 回答
如何合并多个列中具有重复值的行
4 回答
如何合并多个唯一id
3 回答
如何合并多个图纸并使用图纸名称的名称重命名列名?
6 回答
如何合并多个字典并添加同一个键的值?(Python)
8 回答
如何合并多个搜索结果文件(pkl)以将它们全部打印在一起?
6 回答
如何合并多个数据帧
3 回答
如何合并多个数据帧并使用Pandas为假人添加列?
6 回答
如何合并多个数据帧并按时间戳排序
8 回答
如何合并多个数据帧的列表并用另一个lis标记每列
9 回答
如何合并多个数据框中的列
4 回答
如何合并多个文件?
1 回答
如何合并多个查询集?
2 回答
如何合并多个绘图?
10 回答
如何合并多个词典
2 回答
如何合并多个输入数据集(数据帧)?
6 回答
如何合并多条记录中拆分的文本行
10 回答
如何合并多索引列datafram
5 回答
如何合并多级(即多索引)数据帧?
7 回答