django form недействителен после настройки его действительным экземпляром

Я действительно смущен, почему эта form.is_valid() возвращает False:

Вот модель django, которую я создал:

class aModel(models.Model):
    some_id = models.IntegerField()

Я превращаю Model в ModelForm и создаю экземпляр ModelForm с экземпляром Model . Должен ли этот экземпляр ModelForm быть действительным?

>>> class aModelForm(forms.ModelForm):
...     class Meta:
...             model = aModel
... 
>>> am = aModel.objects.get(id=1)
>>> for k,v in am.__dict__.items(): print k,v
... 
_state 
id 1
some_id 5
>>> form = aModelForm(instance=am)
>>> form.is_valid()
False
>>> am.save()
>>> am.some_id = 6
>>> am.save()
>>> 

Почему форма не действительна? Что мне нужно сделать, чтобы форма была действительной?

1
nl ja de
form.errors возвращает {}
добавлено автор Cole, источник

1 ответы

Похоже, что эта форма не привязана к данным, поэтому она не может быть проверена. Вы можете проверить, распечатав form.is_bound() непосредственно перед form.is_valid() для проверки.

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

form = aModelForm({'some_id': am.some_id}, instance=am)
form.is_valid()

Подробнее см. Django - API форм .

1
добавлено
Я достаточно читал API Forms, но ваш простой ответ помогает так много добавить это понимание, которое делает все более понятным. Благодаря!
добавлено автор Cole, источник
Можете ли вы рассказать о том, какими должны быть данные? Я не понимаю, зачем ему нужно что-то другое, кроме моего экземпляра.
добавлено автор Mikhail, источник
Ну, я полагаю, вы обновляете данные для экземпляра. Просто просто экземпляр только присваивает экземпляр ModelForm, но не связывает данные, которые вы обновляете/проверяете из запроса POST. Вы не будете проверять, что экземпляр соответствует ModelForm, когда этот экземпляр не изменяется каким-либо образом. Он был проверен в последний раз, когда он был сохранен.
добавлено автор Furbeenator, источник
Django
Django
1 931 участник(ов)

Полезная информация и правила: https://github.com/django-ru/faq Вакансии и резюме: @django_jobs Пофлудить идём сюда: @django_flood Статистика чата: combot.org/chat/-1001063854692

django_jobs
django_jobs
916 участник(ов)

Поиск и предложения работы (Django) Правила: https://t.me/django_jobs/4 Вакансии с тегом #job улетают в канал @django_jobs_board Вопросы к @amureki Основной чат @pydjango

Django
Django
733 участник(ов)

Веб-фреймворк для перфекционистов с дедлайнами. Наша группа на vk: https://vk.com/django_framework В Discord: https://discord.me/django_framework по всем вопросам @MechanisM

django flood
django flood
71 участник(ов)

Флудилка джангистов Пока без правил