AttributeError' list'对象没有属性' id'

时间:2017-02-08 13:49:11

标签: python django

我收到了一个错误, / ResultJSON / v1 / results /的AttributeError '列表'对象没有属性' id'

在ResultJSON(子应用程序)的views.py中,我写了

import json
from collections import OrderedDict
from django.http import HttpResponse

def render_json_response(request, data, status=None):

    json_str = json.dumps(data, ensure_ascii=False, indent=2)
    callback = request.GET.get('callback')
    if not callback:
        callback = request.POST.get('callback')
    if callback:
        json_str = "%s(%s)" % (callback, json_str)
        response = HttpResponse(json_str, content_type='application/javascript; charset=UTF-8', status=status)
    else:
        response = HttpResponse(json_str, content_type='application/json; charset=UTF-8', status=status)
    return response

def UserResult(request):
    results = []
    results = OrderedDict([
    ('id',results.id),
    ('name', results.name),
    ])
    results.append(results)

    data = OrderedDict([ ('results', results) ])
    return render_json_response(request, data)

我真的不明白为什么会发生这个错误,因为我的数据库(sqlite)有id列。

我想让系统从数据库中获取数据(id和名称是列'名称,这些数据在我的数据库中),并将这些数据编码为JSON。

那么,我怎么能解决这个问题?我想也许models.py是错误的...(因为子应用程序的models.py没有代码。)

1 个答案:

答案 0 :(得分:0)

您的results变量是一个python列表,您看到的错误是正常的,因为该列表没有名为id的属性

我认为您想要实现的目标如下:

def UserResult(request):
    results = OrderedDict([
        ('id', x.id), ('name', x.name)
        for x in YourChildModel.objects.all()
    ])

    data = OrderedDict([ ('results', results) ])
    return render_json_response(request, data)

最好在您使用Python进行编码时关注pep8 naming convention,以便其他人可以轻松了解您正在做的事情。