2011-12-17 96 views
36

在我views.py我指定的值保存表單之前。我用來做什麼的方式如下:現在對象不支持項目分配錯誤

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

,自變量列表中有一點長,我想遍歷session_results與下面的循環(如亞當here描述):

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) 

您現在可以使用self [key]進行訪問。

相關問題