Идея (не проверено, работает ли она):
class MySuperForm(CombinedForm):
includes = (ImageForm, EntryForm, )
Вы смотрите здесь как строится форма.Вы можете создать свою собственную форму, расширив ее от BaseForm и предоставив другую __metaclass__
.
class CombinedForm(BaseForm):
__metaclass__ = DeclarativeFieldsMetaclassFromMultipleClasses
. В DeclarativeFieldsMetaclassFromMultipleClasses вы в основном делаете то же самое, что и здесь , за исключением того, что вы суммируете объявленные поля иззанятия по
class DeclarativeFieldsMetaclassFromMultipleClasses(type):
def __new__(cls, name, bases, attrs):
for clazz in attrs['includes']:
attrs['base_fields'] += get_declared_fields(bases, clazz.attrs)
new_class = super(DeclarativeFieldsMetaclassFromMultipleClasses,cls).__new__(cls, name, bases, attrs)
if 'media' not in attrs:
new_class.media = media_property(new_class)
return new_class