1

なぜこの form.is_valid() が False を返すのか、私は本当に混乱しています:

私が作成したdjangoモデルは次のとおりです。

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

を に変換Modelし、 のインスタンスを使用してインスタンスをModelForm作成します。このインスタンスは有効ではありませんか?ModelFormModelModelForm

>>> 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 <django.db.models.base.ModelState object at 0x1020c8a50>
id 1
some_id 5
>>> form = aModelForm(instance=am)
>>> form.is_valid()
False
>>> am.save()
>>> am.some_id = 6
>>> am.save()
>>> 

フォームが有効でないのはなぜですか? フォームを有効にするにはどうすればよいですか?

4

1 に答える 1

2

このフォームはデータにバインドされていないように見えるため、検証できません。form.is_bound()確認する直前に印刷することで確認できform.is_valid()ます。

バインドされていない場合は、検証できないと思います。データをバインドするには、最初の引数の辞書としてデータをフォームに追加する必要があります。

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

詳細については、 Django - フォーム APIを参照してください。

于 2012-12-28T01:06:27.747 に答える