在验证表单之前定义视图中字段的值

时间:2011-10-24 15:54:19

标签: django forms

我有一个带有字段“status”的表单,该字段将由视图设置,具体取决于我表单中某些字段的值

是否可以在form.is_valid()之前执行此操作(否则表单无效)?

我能想到的唯一方法就是让“状态”字段为空白,但这似乎不是很好的设计

定义设置这些字段的clean()方法是更好的解决方案吗?

2 个答案:

答案 0 :(得分:2)

如果状态字段不是由填写表单的用户设置的,则可能根本不应该在表单中。

如果稍后在创建/更新模型实例或其他内容时使用该值,那么最好只在表单的保存方法中包含视图确定的值,例如form.save(status=my_status)(如果它是{ {1}})或者当你实例化你的模型时,否则。

如果用户确实输入了状态,那么您可以使用自定义ModelForm方法来确保它是可接受的值。

答案 1 :(得分:0)

然后你应该使用这个状态值初始化表单,然后隐藏字段。

class StatusForm(forms.ModelForm):
    def __init__(self, *arg, **kwargs):
        super(StatusForm, self).__init__(*arg, **kwargs)
        # set needed value here and hide field