Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python django视图替换dict值-列表索引必须是整数,而不是str_Python_Django_Django Rest Framework - Fatal编程技术网

Python django视图替换dict值-列表索引必须是整数,而不是str

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

我使用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','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']