我有FormView
ModelForm
来创建特定模型。
现在让我们说我希望能够编辑该模型,但只能编辑一部分字段,因此只有这些字段可以修改,验证只能在这些上运行,而不是其他的(和其他的)不会出现"必需"等等。
是否可以在此方案中重用现有的ModelForm
,或者我是否必须完全创建新表单?
答案 0 :(得分:1)
您可以传递某种“旗帜”,让表格知道要区别对待哪些字段。
代码示例更有意义:
# your view
class SpecialFormView(FormView):
# [...your view attributes..]
def get_form_kwargs(self):
kwargs = super(SpecialFormView, self).get_form_kwargs()
kwargs['is_special'] = True
return kwargs
# your form
class MyModelForm(ModelForm):
# [... your fields and meta..]
def __init__(self, *args, **kwargs):
is_special = kwargs.pop('is_special', False)
super(MyModelForm, self).__init__(*args, **kwargs)
if is_special:
for field in ['field_1', 'field_2']:
self.fields[field].required = False