[Fixed]-Django CBV: reuse form with fields subset

1👍

✅

You can pass some sort of “flag” to let the form know which fields to treat differently.

A code example will make more sense:

# 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

Leave a comment