Проверьте, есть ли у Django ModelForm экземпляр - PullRequest
27 голосов
/ 14 марта 2012

Я хотел бы показать предупреждение, если я нахожусь в форме редактирования, и скрыть его, если я нахожусь в форме создания Django ModelForm.

form.is_bound скажите, была ли ранее заполнена форма, но как проверить, был ли ModelForm установлен с существующим экземпляром?

Я пробовал это hasattr(form.instance, 'pk'), но правильно ли это сделать?

Приветствия

Natim

Ответы [ 2 ]

48 голосов
/ 14 марта 2012

Попробуйте проверить, если form.instance.pk равно None.

hasattr(form.instance, 'pk') всегда будет возвращать True, поскольку каждый экземпляр модели имеет поле pk, даже если оно еще не было сохранено вбаза данных.

1 голос
/ 08 мая 2018

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

class Foo(ModelForm):
    _newly_created: bool

    def __init__(self, *args, **kwargs):
        self._newly_created = kwargs.get('instance') is None
        super().__init__(*args, **kwargs)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...