2010-12-25 11 views
0

djangoオブジェクトのシリアライズに問題があります。問題は、外部キーがあることです。シリアライゼーションには、インデックスだけでなく、参照されたオブジェクトからのデータが必要です。Django jsonのシリアル化の問題

たとえば、私はスポンサーのデータフィールドを "13"ではなく "sponsor.last_name、sponsor.first_name"としたいと思います。

シリアル化を修正するにはどうすればよいですか?

jsonデータ: {"totalCount": "2"、 "activities": "{" "pk":1、 "model": "app.activity"、 "fields":{"activity_date": "2010 -12-20" 、 "説明": "私の活動"、 "スポンサー":13、 "場所":1、....

モデルコード:

class Activity(models.Model): 
    activity_date = models.DateField() 
    description = models.CharField(max_length=200) 
    sponsor = models.ForeignKey(Sponsor) 
    location = models.ForeignKey(Location) 

class Sponsor(models.Model): 
    last_name = models.CharField(max_length=20) 
    first_name= models.CharField(max_length=20) 
    specialty = models.CharField(max_length=100) 

class Location(models.Model): 
    location_num = models.IntegerField(primary_key=True) 
    location_name = models.CharField(max_length=100) 

def activityJSON(request): 
    activities = Activity.objects.all() 
    total = activities.count() 
    activities_json = serializers.serialize("json", activities) 
    data = "{\"totalCount\":\"%s\",\"activities\":%s}" % (total, activities_json) 
    return HttpResponse(data, mimetype="application/json") 

答えて

1

この小さなlibには、ジャンゴと非常に便利です。

2

は、このようなシリアライザに関係を追加します。

activities_json = serializers.serialize("json", activities, relations=('sponsor',)) 

は次に必要なのは次のとおりです。次に

return HttpResponse(activities_json, mimetype="application/json") 

あなたもDjangoのライブラリwadofstuffがインストールされていることを確認してください。

希望すると便利です。

関連する問題