我有一个带有字段“status”的表单,该字段将由视图设置,具体取决于我表单中某些字段的值
是否可以在form.is_valid()之前执行此操作(否则表单无效)?
我能想到的唯一方法就是让“状态”字段为空白,但这似乎不是很好的设计
定义设置这些字段的clean()方法是更好的解决方案吗?
答案 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