Как исключить поля из форм? - PullRequest
0 голосов
/ 29 октября 2019

У меня есть форма модели с несколькими полями. В одном шаблоне я хочу использовать все эти поля в одном шаблоне и исключить определенное поле в другом. Можно ли не писать новую форму и просто исключить это поле в views.py?

1 Ответ

1 голос
/ 29 октября 2019

Не совсем, но вам не нужно повторяться.

Вы можете определить базовую форму, содержащую все поля, которые вы всегда используете, и наследовать от нее, чтобы добавить поля

class MyPersonBaseForm( forms.Form):
    surname = forms.CharField( max_length=100)
    forenames = ...
    age = ...
    company = ...
    ...
class MyFooPersonForm( MyPersonBaseForm):
    foo = 

и MyFooPersonForm имеют все поля MyPersonForm плюс foo

Вы также можете удалить поля из подкласса формы, используя метод __init__, согласно этой записи (соответствующий ответ Гарнерта вставлен ниже)

class LoginFormWithoutNickname(LoginForm):
    def __init__(self, *args, **kwargs):
        super(LoginFormWithoutNickname, self).__init__(*args, **kwargs)
        self.fields.pop('nickname')
...