Подтвердить что ты не робот

Подкласс Django ModelForms

Я хочу расширить ModelForms с основной целью добавления полей в форму. Я думаю, что легче увидеть пример:

# Basic listing
class BasicForm(ModelForm):
    class Meta:
        model = Business
        fields = ('category', 'city', 'name', 'address', 
                'slogan', 'phone', 'website', 'email')

class SocialForm(BasicForm):
    class Meta:
        model = Business
        fields = ('facebook','twitter')

Будет ли это работать? Или он просто уничтожит другие поля из BasicForm в SocialForm?

Каков правильный способ сделать это?

4b9b3361

Ответ 1

Это поздний ответ, но я хотел бы отметить, что вы можете подклассифицировать внутренний класс Meta следующим образом:

class SocialForm(BasicForm):
    class Meta(BasicForm.Meta):
        fields = BasicForm.Meta.fields + ('facebook', 'twitter')

Таким образом, вам не нужно повторять определение model = Business, и любые другие атрибуты Meta, которые вы можете добавить в BasicForm, будут автоматически наследоваться SocialForm.

Для справки, здесь документация Django по этому подходу.