对象不支持项赋值错误
在我的 views.py
文件中,我在保存表单之前会先给一些值赋值。我以前是这样做的:
projectForm.lat = session_results['lat']
projectForm.lng = session_results['lng']
现在,由于变量的列表有点长,我想用一个循环来遍历 session_results
,就像Adam在这里描述的那样:
for k,v in session_results.iteritems():
projectForm[k] = v
但是我在使用循环的方案时遇到了错误,提示 'Project' object does not support item assignment
。我不太明白为什么会这样。Project
是我用来创建ModelForm的模型类。
谢谢你的帮助!
3 个回答
0
在我的情况下,我想渲染数据,但不需要_content这个部分。不过,响应对象是不能编辑或删除的,所以我使用了变量,现在这个变量是一个字典,而不是Response对象,并且我去掉了_content这个属性。
data_obj = vars(r)
del data_obj['_content']
data_json = json.dumps(data_obj, indent=4, default=str)
return data_json
错误信息 SEO:
类型错误:'Response'对象不支持删除项目
类型错误:'Response'对象不支持赋值项目
34
另一种方法是添加 __getitem__ 和 __setitem__ 这两个函数。
def __getitem__(self, key):
return getattr(self, key)
现在你可以用 self[key] 来访问数据了。
129
这个错误看起来很明显:模型对象不支持直接修改里面的内容。
比如说,MyModel.objects.latest('id')['foo'] = 'bar'
这样的写法也会出现同样的错误。
有点让人困惑的是,你的模型实例叫做 projectForm
...
如果你想在循环中重复你第一段代码的功能,你需要使用 setattr
这个方法。
for k,v in session_results.iteritems():
setattr(projectForm, k, v)