2017-02-08 9 views
2

/ResultJSON/v1/results/ の 'list'オブジェクトにAttributeErrorがあります。 'id'属性はありません。このエラーが起こる理由は、私のデータベース(SQLiteのは)id列を持っているのでResultJSON(子アプリ)のviews.pyでAttributeError 'list'オブジェクトに属性 'id'がありません

は、私が

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) 

を書いた私は本当に理解することはできません。

私は、データベースからデータを取得して(列の名前であり、これらのデータは私のデータベースにあるid &という名前の)システムを作成し、これらのデータをJSONにエンコードしたいと考えています。

(子アプリのmodels.pyは何のコードを持っていないので。)だから、どのように私はこの問題を解決することができますか?私は...多分models.pyが間違っていると思う

+0

'results = []'に続いて 'foo = ... results.id ...'が非常に疑わしく見えます! – schwobaseggl

答えて

0

あなたresults変数はPythonのリストであり、エラーリストは

idは、私はあなたが達成したいと思うという名前の属性を持っていないとして、あなたは正常です見ていることは以下の通りです:あなたがPythonでコーディングしているよう

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) 

より良いpep8 naming conventionに従うことを、他の人簡単にうまくいくあなたがしていることを忘れないでください。

+0

thx、ur comments私はDjangoのJsonResponseを知らなかった!しかし、あなたが書いたことは理解できない。コンテンツタイプとjsonダンプを扱う必要はないから、render_json_responseメソッドは役に立ちません。これらのコードを追加しますか?あなたが意味するサンプルコードを追加しますか? – user7523656

+0

コールバックを追加しようとしているときには、それほど有用ではないので、そのまま返却したいプレーンなPythonオブジェクトを持っている場合に限り、忘れてしまいます。あなたの問題が修正された場合はお知らせください – Mounir

関連する問題