我收到了一个错误, / 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没有代码。)
答案 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,以便其他人可以轻松了解您正在做的事情。