0

私はviews.pyに次のコードを持っており、状態にある人のリスト全体を取得したいと思います。

def all_json_persons(request, state):
    print "current_state--" + str(state)
    current_state = State.objects.get(id=state)
    print "current_state--" + str(current_state)
    districts = District.objects.all().filter(state=state)
    print "districts--" + str(districts)
    personsList = []
    for current_district in districts:
       villages = Address.objects.all().filter(district=current_district) 
       for current_village in villages:
          persons = Person.objects.all().filter(address=current_village)
          print "persons--" + str(persons)
          personsList.append(persons)  
    print "personsList--" + str(personsList)
    json_persons = serializers.serialize("json", personsList)
    print "json_persons--" + json_persons
    return HttpResponse(json_persons, mimetype="application/javascript")

端末に次の結果を返します。

current_state--2
current_state--Odisha
districts--[<District: Jagatsighpur>, <District: Koraput>]
persons--[<Person: Annnn Ppppp>, <Person: Rrrrr Jeeee>, <Person: Raaaaa Jennn>, <Person: Annnnn Saaaa>]
persons--[<Person: Laaaa Sikaka>, <Person: Lingram  Azzzzz>]
personsList--[[<Person: Annnn Ppppp>, <Person: Rrrrr Jeeee>, <Person: Raaaaa Jennn>, <Person: Annnnn Saaaa>], [<Person: Laaaa Sikaka>, <Person: Lingram  Azzzzz>]]
**[15/Dec/2012 21:05:42] "GET /state/2/all_json_persons/ HTTP/1.1" 500 75201**

上記の状況で以下のコード行が機能しない理由を理解できません。

json_persons = serializers.serialize("json", personsList)

ただし、上記の行のpersonsListをpersonsに置き換えると。それはうまくいきます。しかし、私は州の人の全リストが欲しいです。助けてください。

4

1 に答える 1

1

Djangoのシリアライザーは、クエリセットをシリアル化するためのものです。他のものをシリアル化したい場合は、egvalues()またはvalues_list()を使用して基本タイプに変換し、通常のJSONメカニズムを使用してシリアル化します。

于 2012-12-16T03:19:14.003 に答える