Как изменить отображаемые поля, если экземпляр передается в форму? - PullRequest
1 голос
/ 21 сентября 2019

У меня есть форма примерно такая:

class ExampleForm(forms.ModelForm):
    class Meta:
        model = Example
        fields = ('field1','field2')

Теперь я хочу добавить дополнительное поле, если ему передан экземпляр.Это означает, что, если я создаю форму с экземпляром (для редактирования этого объекта), я хочу изменить отображаемые поля.

Я знаю, что могу использовать создание другой формы для этой цели и создать экземпляр этого, а не использовать это.Однако есть ли способ сделать это в той же форме?

1 Ответ

1 голос
/ 21 сентября 2019

Переопределите метод __init__ и измените self.fields, когда instance передается в форму.

class ExampleForm(forms.ModelForm):
    class Meta:
        model = Example
        fields = ('field1','field2')

    def __init__(self, *args, **kwargs):
        super(ExampleForm, self).__init__(*args, **kwargs)
        if kwargs.get('instance'):
            self.fields['field3'] = forms.CharField()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...