Django如何保存没有验证的表单?

2024-03-29 09:40:25 发布

您现在位置:Python中文网/ 问答频道 /正文

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

当我试图用commit=False参数保存它时,会产生错误:

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

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

但如果有人得到了不同的答案,请回答。在


Tags: the数据用户功能数据库false表单内容
2条回答

在表单.py,您需要指定不需要所有字段,将required=False传递给字段构造函数:

示例:

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

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

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

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

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

相关问题 更多 >