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
добавлено
Просмотры: 1
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, источник