Django JSON Eroor:"列表索引必须是整数,而不是str"

时间:2016-07-05 12:24:51

标签: json django list

我有以下JSON,其中包含员工数据。

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

我有两张表IdeasLikes

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

在喜欢的表中,我存储了user_id(谁喜欢主意)而idea_id是外键

我想使用user_id

将同类表的JSON替换为该用户的名称

以下是我在视图文件中的代码..

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 %} 

我收到错误&#34;列表索引必须是整数,而不是str&#34;

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

2 个答案:

答案 0 :(得分: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]

答案 1 :(得分: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