gpt4 book ai didi

django - django ChoiceField 中的问题

转载 作者:行者123 更新时间:2023-12-01 01:43:42 24 4
gpt4 key购买 nike

当我提交空的 radio 输入时遇到问题。如果我选择一个选项,该表单就可以正常工作;但是,如果我将其留空,则会收到以下错误 -

MultiValueDictKeyError at /
Key 'like' not found in <QueryDict:...

我尝试了几种解决方案,包括在提到的字段'like'上使用dict.get并删除数据库中的列——这似乎是表单模块中的问题。

这是我的代码:

在 forms.py 中 --

from django import forms

class PictureForm(forms.Form):
like = forms.ChoiceField(widget=forms.RadioSelect(), choices=(
[('yes','yes'), ('no','no'),]),)
name = forms.CharField()
email = forms.EmailField()
message = forms.CharField(widget=forms.Textarea)

在views.py中

def index2(request):
if request.method == 'POST':
form = PictureForm(request.POST)
if form.is_valid():
cd = form.cleaned_data
Picture.objects.create(like=cd['like'], name=cd['name'], email=cd['email'], message=cd['message'])
return HttpResponseRedirect ('/thanks/')
else:
form = PictureForm()
return render_to_response('index2.html', {'form':form}, context_instance=RequestContext(request))

我想要它,这样当 radio 提交空白时显然不会出现错误 - 并且

1) 如何允许空白提交,以及

2)如何提示错误信息。

此外,验证在此表单上不起作用(我已经完成了之前的教程,这是验证第一次没有自动起作用)。

谢谢。

最佳答案

Picture.objects.create(like=cd['like'], [...])

您正在尝试使用不存在的键访问 cd 字典,因为该字段没有值。

尝试放入 if/else 语句:

if like in cd:
Picture.objects.create(like=cd['like'], [...])

此外,尚不清楚您是否按照 Thierry 建议使用 ModelForm,但如果是这样,您可能需要将参数 blank=True, null=True 添加到模型字段创建中,以允许空值。

关于django - django ChoiceField 中的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5925402/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com