class CombinedFormBase(forms.Form):
    form_classes = []

def __init__(self, *args, **kwargs):
    super(CombinedFormBase, self).__init__(*args, **kwargs)
for f in self.form_classes:
    name = f.__name__.lower()
setattr(self, name, f(*args, **kwargs))
form = getattr(self, name)
self.fields.update(form.fields)
self.initial.update(form.initial)

def is_valid(self):
    isValid = True
for f in self.form_classes:
    name = f.__name__.lower()
form = getattr(self, name)
if not form.is_valid():
    isValid = False
if not super(CombinedFormBase, self).is_valid():
    isValid = False
for f in self.form_classes:
    name = f.__name__.lower()
form = getattr(self, name)
self.errors.update(form.errors)
return isValid

def clean(self):
    cleaned_data = super(CombinedFormBase, self).clean()
for f in self.form_classes:
    name = f.__name__.lower()
form = getattr(self, name)
cleaned_data.update(form.cleaned_data)
return cleaned_data
Несколько моделей в одной модели django ModelForm?