【问题标题】:django form is_valid and cleaned_data to achieve Save and Submit behavior.django form is_valid 和cleaned_data 来实现保存和提交行为。
【发布时间】:2013-10-25 09:54:20
【问题描述】:

我正在使用表单集,并尝试实现保存选项。 即:您在表单页面中输入表单详细信息,有两个功能

1) 保存

2) 提交

保存 -> 我想将数据保存到数据库中而不进行验证。[无论用户是否输入必填字段]

提交 -> 当然有验证并保存到数据库中。

对于提交,我没有问题。

但为了保存:

 for form in formset.form:
     1) Validate the form form.is_validate() -> Just invoking.
     2) get the cleaned_data 

在下面的方法中,

1) 只有当 is_valid() 为 True 时,cleaned_data 才可用?

2) 我们还有其他方法可以达到同样的效果吗?

您的帮助将不胜感激。

【问题讨论】:

    标签: django django-models django-forms django-views


    【解决方案1】:

    1) 只有当 is_valid() 为 True 时,cleaned_data 才可用?

    是的。它仅在表单有效时可用。

    2) 我们还有其他方法可以达到同样的效果吗?

    我认为您不能将此类数据保存在同一张表中的数据库中。但是,您可以将其保存在会话(cookies)中。您可以序列化表单(或提交的 POST 数据)并将其保存为会话中的 JSON。

    要显示之前保存的表单,您可以检索此数据并将其作为 initial_data 传递给表单或表单集。

    【讨论】:

    • 这意味着将部分信息从表单存储到数据库是一场噩梦?从文档“在 Django 1.5 中更改。如果表单中有任何错误,Django 会完全删除cleaned_data 属性。从1.5 版开始,即使表单没有验证,clean_data 也会存在,但它只包含确实的字段值验证。”
    • 我在保存 form.save() 之前尝试了 fields.required = False,但它仍然会引发验证错误。
    • @Whoami,我错过了 1.5 的变化。但是,即使存在某些属性,如果任何必需的属性不存在或存在其他错误(如完整性错误等),您也可能无法将对象保存在数据库中。最好的方法是将此类数据作为 JSON 存储在单独的表中(或会话)并在您想恢复时使用它。
    猜你喜欢
    • 2012-08-31
    • 2018-06-09
    • 2020-06-22
    • 1970-01-01
    • 2012-12-05
    • 2011-05-13
    • 2019-03-06
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多