dea*_*ase 10 python django django-models django-forms
我在django应用程序中有简单的视图,我只想在其中一个表单有效时显示.我有类似的东西:
@login_required
@require_role('admin')
def new_package(request):
invoicing_data_form = InvoicingDataForm(instance=request.user.account.company.invoicingdata)
if invoicing_data_form.is_valid():
# all here
return HttpResponse('Form valid')
else:
logger.info("Form invalid")
return HttpResponse(json.dumps(invoicing_data_form.errors)
Run Code Online (Sandbox Code Playgroud)
我总是得到表单无效的日志信息消息,但是,我什么也没得到
invoicing_data_form.errors
Run Code Online (Sandbox Code Playgroud)
这很奇怪,因为我在其他视图中使用用户输入数据验证此表单并且它工作得很好.任何的想法?
编辑:只是为了澄清.我没有在此表单中请求用户提供任何数据.我正在使用此表单来验证某个模型实例(此表单是ModelForm的子类).
Fra*_*ant 17
那是因为你没有"喂养"你的表格.
做这个:
invoicing_data_form = InvoicingDataForm(instance=invoice, data=request.POST or None)
Run Code Online (Sandbox Code Playgroud)
你有一个未绑定的表格. https://docs.djangoproject.com/en/1.7/ref/forms/api/#bound-and-unbound-forms
Form实例绑定到一组数据或绑定.
如果它绑定到一组数据,它就能够验证该数据并将表单呈现为HTML,并在HTML中显示数据.
如果它是未绑定的,则无法进行验证(因为没有要验证的数据!),但它仍然可以将空白表单呈现为HTML.
要将数据绑定到表单,请将数据作为字典作为第一个参数传递给Form类构造函数:
invoicing_data_form = InvoicingDataForm(request.POST or None, instance=invoice)
Run Code Online (Sandbox Code Playgroud)