2011-12-17 16 views
36

私のviews.pyでは、フォームを保存する前に値を割り当てています。変数のリストが少し長くなったことから、今オブジェクトはアイテム割り当てエラーをサポートしていません

projectForm.lat = session_results['lat'] 
projectForm.lng = session_results['lng'] 

(アダムhereで説明したように)私は、次のループでsession_resultsにわたってループ処理を望んでいた:私はそれを次の方法を行うために使用

for k,v in session_results.iteritems(): 
    projectForm[k] = v 

ループソリューションのエラー'Project' object does not support item assignmentが表示されます。私は理由を理解するのが難しいです。 ProjectはModelFormで使用するモデルクラスです。

ありがとうございました!

答えて

46

エラーは明らかです:モデルオブジェクトはアイテムの割り当てをサポートしていません。 MyModel.objects.latest('id')['foo'] = 'bar'はこの同じエラーをスローします。

それはあなたのモデルインスタンスは、ループ内のコードの最初のブロックを再現するためにprojectForm ...

と呼ばれていることを少し紛らわしいですが、あなたはsetattr

for k,v in session_results.iteritems(): 
    setattr(projectForm, k, v) 
11

に追加されます別の方法を使用する必要があります__getitem____setitem__機能

def __getitem__(self, key): 
    return getattr(self, key) 

自己[キー]を使用して今すぐアクセスできます。

関連する問題