在我的应用程序中我有一个CreateView必须使用默认值初始化模型的某些字段,该默认值与模型内部定义的默认值不同。
我不希望用户编辑该值,因此我将该字段放入列表exclude中
class AForm(ModelForm):
class Meta:
model = AModel
exclude = ['a_field']
class AView(CreateView):
form_class = AForm
Run Code Online (Sandbox Code Playgroud)
问题是:我在哪里设置的值a_field?
我尝试clean在里面定义方法AForm,就像这样
class AForm(ModelForm):
[...]
def clean(self):
d = super(AForm, self).clean()
d['a_field'] = 10
return d
Run Code Online (Sandbox Code Playgroud)
然而a_field设置为模型中定义的默认值,而不是10。我也尝试过定义clean_a_field,但根本没有执行。
a_field如果我从列表中删除exclude,则 和clean将clean_a_field起作用,但除非我在模板内渲染一些内容,否则表单将不会验证<input name="a_field">,这不是最佳的。