Django表单返回is_valid()= False且没有错误

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)


Yuj*_*ita 8

你有一个未绑定的表格. 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)

  • 在此视图中,我只想验证表单,而不是向用户请求任何数据。这就是为什么我为表单提供对象实例(即 ModelForm 类实例)。你确定我需要提供数据吗?即使是这样,当我添加这个时,我仍然收到表单无效消息,并且根本没有错误 (2认同)