Form inheritance (docs) in Django is extremely straightforward:
class EnhancedModelForm(ModelForm): | |
… | |
class SuperEnhancedModelForm(EnhancedModelForm): | |
… |
You can also subclass the parent’s Meta inner class if you want to change the Meta.fields or Meta.excludes lists:
class EnhancedModelForm(ModelForm): | |
class Meta: | |
model = MyModel | |
fields = ('field1', 'field2') | |
class SuperEnhancedModelForm(EnhancedModelForm): | |
class Meta(EnhancedModelForm.Meta): | |
model = MyModel | |
fields = ('field3', 'field4') |
But what if you want to add to the fields rather than replace them? This is actually straightforward as well:
class EnhancedModelForm(ModelForm): | |
class Meta: | |
model = MyModel | |
fields = ('field1', 'field2') | |
class SuperEnhancedModelForm(EnhancedModelForm): | |
class Meta(EnhancedModelForm.Meta): | |
model = MyModel | |
fields = EnhancedModelForm.Meta.fields + ('field3', 'field4') |