Django CBV:使用字段子集重用表单

时间:2017-04-20 09:17:13

标签: django

我有FormView ModelForm来创建特定模型。

现在让我们说我希望能够编辑该模型,但只能编辑一部分字段,因此只有这些字段可以修改,验证只能在这些上运行,而不是其他的(和其他的)不会出现"必需"等等。

是否可以在此方案中重用现有的ModelForm,或者我是否必须完全创建新表单?

1 个答案:

答案 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