即使POST中存在所有必填字段,Django表单也不接受POST(is_valid为False)。
我正在使用一个简单的表单,但使用来自不同模型的查询结果动态生成表单字段。使用以下指南:https://jacobian.org/writing/dynamic-form-generation/
我的观点:
def questionnaire(request):
if request.user.is_authenticated():
if request.method == 'POST':
questionnaire_form = Questionnaire(request.POST)
if questionnaire_form.is_valid():
return HttpResponseRedirect('')
else:
return render(request, 'questionnaire.html', {'form': Questionnaire()})
else:
return render(request, 'questionnaire.html', {'form': Questionnaire()})
else:
return HttpResponseRedirect('')
我的表格
class Questionnaire(forms.Form):
vendor = forms.IntegerField(max_value=10, label="Vendor ID")
def __init__(self, *args, **kwargs):
fieldlist = OrderedDict()
for item in ControlQuestions.objects.all():
fieldlist[str(item.control_id)] = item.question
super(Questionnaire, self).__init__(fieldlist, *args, **kwargs)
for item in fieldlist:
self.fields[item] = forms.BooleanField(label=fieldlist[item], initial="False")
request.body
csrfmiddlewaretoken=****&vendor=1&1=on&2=on&3=on
questionnaire_form.errors
<ul class="errorlist"><li>vendor<ul class="errorlist"><li>This field is required.</li></ul></li></ul>