我使用Django REST框架将以下数据传入Django视图 -
{'varmst_starttype': 'SCH_DATE', 'varmst_offsets': '0000SUNDAY1', '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, 0), 'varmst_lstchgtm': datetime.datetime(2014, 9, 10, 22, 0, 28), 'varmst_id': 1867, 'varmst_lstval': None, 'varmst_startcal': 0, 'varmst_type': 3}
我想要做的是使用' owner_name'上的键值。获得' id'通过去 -
ownername = request.DATA['owner_name']
ownerid = Owner.objects.filter(owner_name=ownername).values_list('owner_id')[0]
然后,我想删除'owner_name': 'Operations'
并将其替换为'owner_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
相同的过程应该适用于字典吗?
此尝试因问题的原始标题失败。
def put(self, request, format=None):
data = request.DATA
data.['owner_id'] = 786
return HttpResponse(data)
答案 0 :(得分:1)
正如我在上下文中提到的那样 -
数据是来自request.DATA [' owner_name']的信息,这是一个字符串。
要访问数据['另一个字符串']将无效。
你想要data = request.DATA。
修改
抱歉 - 我忘记了request.DATA是不可变的。你需要做
data = request.DATA.copy()