私のviews.py
フォームを保存する前に値を割り当てます。以前は次の方法でそれを行っていました。
projectForm.lat = session_results['lat']
projectForm.lng = session_results['lng']
ここで、変数のリストが少し長くなったので、session_results
次のループ(Adam here で説明):
for k,v in session_results.iteritems():
projectForm[k] = v
しかし、エラー'Project' object does not support item assignment
ループソリューション。理由を理解するのに苦労しています。 Project
は、ModelFormに使用するモデルクラスです。
ご協力ありがとうございました!
エラーは明らかなようです。モデルオブジェクトはアイテムの割り当てをサポートしていません。 MyModel.objects.latest('id')['foo'] = 'bar'
はこの同じエラーをスローします。
モデルインスタンスがprojectForm
...と呼ばれるのは少し混乱します.
ループ内でコードの最初のブロックを再現するには、setattr
を使用する必要があります
for k,v in session_results.iteritems():
setattr(projectForm, k, v)
別の方法は、__ getitem __、__ setitem __関数を追加することです
def __getitem__(self, key):
return getattr(self, key)
今すぐself [key]を使用してアクセスできます。