Python django视图替换dict值-列表索引必须是整数,而不是str
我使用Django REST框架将以下数据输入到Django视图中-Python django视图替换dict值-列表索引必须是整数,而不是str,python,django,django-rest-framework,Python,Django,Django Rest Framework,我使用Django REST框架将以下数据输入到Django视图中- {'varmst_starttype':'SCH_DATE','varmst_offset':'0000sunday','owner_name':'Operations','varmst_publish':'N','varmst_calc':'Y','varmst_public':'Y','varmst_desc None','varmst_name':'var_DATE'varmst_readonly':'N','varms
{'varmst_starttype':'SCH_DATE','varmst_offset':'0000sunday','owner_name':'Operations','varmst_publish':'N','varmst_calc':'Y','varmst_public':'Y','varmst_desc None','varmst_name':'var_DATE'varmst_readonly':'N','varmst_value':20140911,'varmst_startdt':datetime.datetime(1899,12,30,0),'varmst_lstchgtm':datetime.datetime(2014,9,10,22,0,28),'varmst_id':1867,'varmst_lstval':无,'varmst_startcal':0,'varmst_type':3}
我要做的是使用“owner\u name”上的键值通过以下方式获取“id”——
ownername = request.DATA['owner_name']
ownerid = Owner.objects.filter(owner_name=ownername).values_list('owner_id')[0]
然后我想删除'owner\u name':'Operations'
,并将其替换为'owner\u id':235
当我试图在ownername上获得响应时,我得到以下错误-
list indices must be integers, not str
这是我的观点,我是基于-
def put(self, request, format=None):
data = request.DATA
data.update({'owner_id': 786})
return HttpResponse(data)
我已经更新删除了序列化程序,因为问题在我开始序列化之前就出现了,但是我尝试修改请求数据。即使是在简单的尝试更新request.DATA时,我也会出错。使用上述PUT,我得到以下结果-
'list' object has no attribute 'update'
这是有道理的,因为我的理解是这是一条格言。但根据这条-
http://stackoverflow.com/questions/1024847/add-to-a-dictionary-in-python
同样的过程应该适用于dict
这一尝试因问题的原始标题而失败
def put(self, request, format=None):
data = request.DATA
data.['owner_id'] = 786
return HttpResponse(data)
正如我在信中提到的- 数据是来自request.data['owner\u name']的信息位,它是一个字符串 访问数据的字符串['other string']将不起作用 您希望data=request.data 编辑 抱歉-我忘记了该请求。数据是不可变的。你需要做什么
data = request.DATA.copy()
我看不出你实际上在哪里尝试进行替换-似乎有一点代码是错误所在。这就是我尝试过的一切都没有奏效的地方。我尝试了
data.update({'owner\u id':235})
。我试过数据['owner_id']=235
和其他变体都给出了相同的错误。从dict中删除值也是如此。数据不是dict。。。这是请求的结果。数据['owner_name']…更新了我的问题我尝试了两次对dict进行更新,但都失败了,出现了不同的错误。这最终将我引向了正确的方向。结果是[data][0][owner\u name']