2011-12-17 71 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]进行访问。

相关问题