我正在尝试检查我的表单中是否存在对象,但出现错误。
我的观点:
def foo(request):
titulo = "something"
form = MyForm(request.POST or None)
queryset = myModel.objects.all()
if myModel.objects.filter(name=name).exists():
messages.error(request, 'already exists')
context = {
"titulo": titulo,
"form": form,
"queryset": queryset,
}
if form.is_valid():
instance = form.save()
messages.success(request, 'Added')
return redirect('/')
return render(request, "forms7.html", context)
Run Code Online (Sandbox Code Playgroud)
基本上我正在做的是添加一个用户,如果该用户存在我想要一个警告说already exists
错误:
分配之前引用的 /model/ 局部变量“名称”处出现 UnboundLocalError
我究竟做错了什么?
注意:
如果我添加name = 'jesus'到我的代码并jesus存在它可以工作,但这不是我想要的。
我想检查我输入的名称是否存在并向我显示消息
有人可以帮助我吗?谢谢。
is_valid使用表单时,您可以通过调用然后访问 来获取输入的表单字段cleaned_data,如下所示:
def foo(request):\n titulo = "something"\n form = MyForm(request.POST or None)\n queryset = myModel.objects.all()\n context = {\n "titulo": titulo,\n "form": form,\n "queryset": queryset,\n }\n\n if form.is_valid():\n name = form.cleaned_data[\'name\']\n if myModel.objects.filter(name=name).exists():\n messages.error(request, \'already exists\')\n else: \n instance = form.save()\n messages.success(request, \'Added\')\n return redirect(\'/\')\n return render(request, "forms7.html", context) \nRun Code Online (Sandbox Code Playgroud)\n\n理想情况下,您\xe2\x80\x99dclean_name在您的表单中有一个函数,以便您的视图不那么复杂。您可以在此处阅读有关创建此类方法的更多信息。
\n\n\n例如,如果您想验证名为serialnumber 的CharField 的内容是否唯一,clean_serialnumber() 将是执行此操作的正确位置。您不需要特定的字段(它只是一个 CharField),但您需要一个特定于表单字段的验证,并且可能需要清理/规范化数据。
\n
例如,您可能想要类似的东西:
\n\nclass MyForm(forms.Form)\n def clean_name(self):\n name = self.cleaned_data[\'name\']\n if myModel.objects.filter(name=name).exists():\n raise forms.ValidationError(\'The name [%s] already exists\' % name) \n return name\nRun Code Online (Sandbox Code Playgroud)\n
| 归档时间: |
|
| 查看次数: |
10707 次 |
| 最近记录: |