Django - почему атрибуты модели остаются обновленными, когда `not form.is_valid ()`? - PullRequest
1 голос
/ 08 апреля 2011

При использовании формы модели:

>>> honest_man.name
u'Abe Lincoln'
>>> form = PersonForm({'name': u'Barack'}, instance=honest_man)
>>> if form.is_valid():
...     print('Yay!')
...     bankster = form.save()
... else:
...     print('Uh Oh :(')
...
Uh Oh :(
>>> honest_man.name  # So, we'll just check to be sure nothing changed
u'Barack'
>>> # Oh no, our instance has been corrupted. Now I have to query for it to get
>>> # a clean version without the changes the form made.
>>> honest_man = Person.objects.get(name=u'Abe Lincoln')
>>> # Wasted query because I still need the instance

Есть ли способ избежать этого (я использую Django 1.3)?

1 Ответ

1 голос
/ 08 апреля 2011

Нет, этого нельзя избежать в 1.3 из-за проверки модели. После очистки полей формы ModelForm заполняет поля экземпляра очищенными данными и вызывает методы instance.clean_fields () и instance.clean ().

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...