2016-07-05 106 views
0

我有以下JSON其中包含员工数据。Django JSON Eroor:“列表索引必须是整数,而不是str”

all_emp = {"success":true,"data":{"users": 
[[{"employeeId":"6","firstName":"Abhishek","lastName":"Amit"}, 
. 
. 
. 
{"employeeId":"CT045","firstName":"Daniel","lastName":"Swamy"} 
]]}} 

我有两个表IdeasLikes

我想显示喜欢这个主意的人的名字。

在喜欢表我已经存储了user_id(谁喜欢想法)和idea_id是一个外键

我想用JSON

继更换如表的user_id到该用户的名字是我的代码视图文件..

latest_ideas_list = Ideas.objects.order_by('-date_added') 

for i in latest_ideas_list: 
    people_like = Likes.objects.values_list('user_id', flat=True).filter(idea_id=i.idea_id) 
    for person in people_like: 
     if any(d["employeeId"] == person for d in all_emp['data']['users']): 
      person = d['firstName'] + ' '+ d['lastName'] 

    i.likelist = people_like 

以下是模板..

{% for person in anidea.likelist %} 
    <span>{{person}}</span> 
{% endfor %} 

我收到错误“列表索引必须是整数,而不是str”

我是python和django的新手。需要帮助。

+0

用户是由于某种原因的一系列字符串列表。 –

+0

是的。我正在使用外部Web服务。 – Shri

回答

1

首先这里我猜all_emp['data'].['users']必须是all_emp['data']['users']d["employeeId"] == person for d in all_emp['data']['users']这里d是一个只有一个元素的列表,然后该元素具有所有的雇主数据。

因此,作为一个快速修复你可以试试这个:

d["employeeId"] == person for d in all_emp['data']['users'][0]

+0

没有收到错误,但我无法用员工姓名替换user_id。 – Shri

0

我解决我的问题与下面的代码。

p_result = [] 
for person in people_like:     
    for d in all_emp['data']['users'][0]: 
     if str(person) in d["employeeId"]: 
      person = d["firstName"] + ' '+ d["lastName"] 
      p_result.append(person) 

i.likelist = p_result 
相关问题