Django - 如何在没有验证的情况下保存表单?

时间:2016-10-25 12:02:25

标签: python django django-models django-forms

我需要将表单保存功能与表单确认分开。我希望用户可以在不首先验证其内容的情况下保存表单,但是当表单完成后,用户应该单击确认按钮,这意味着数据验证并将其保存到数据库。

当我尝试使用commit=False参数保存它时会引发错误:

The Table could not be created because the data didn't validate.

更新: 我所做的是删除模型中的验证并使用验证创建不同的函数,验证在用户完成表单时执行。所以我不用Django术语验证这个表单。

但如果有人得到不同的解决方案,请回答。

2 个答案:

答案 0 :(得分:0)

在forms.py中

,您需要指定不需要所有字段,将 required = False 传递给Field构造函数:

示例:

  

first_name = forms.CharField(max_length = 150,required = False)

答案 1 :(得分:0)

我有同样的问题。我最终得到的解决方案是使用两个表:

  • 一个用于未经证实的数据(包含JSON格式的数据和布尔字段is_confirmed
  • 一个用于确认数据

如果您的数据库支持JSON数据类型(例如MySQL 5.7+),那么您只能坚持使用以前的表。

我认为这更好,因为验证不仅仅是必需的字段。想象一下用户在date字段中输入的无效日期。如果您在未经验证的情况下保存它,它将作为NULL(或0000-00-00)保存到数据库。因此,原始无效值将丢失。