2010-12-25 5 views
0

Ich habe Schwierigkeiten beim Serialisieren eines Django-Objekts. Das Problem ist, dass es Fremdschlüssel gibt. Ich möchte, dass die Serialisierung Daten aus dem referenzierten Objekt und nicht nur aus dem Index enthält.Django Json Serialisierungsproblem

Zum Beispiel möchte ich das Sponsor-Datenfeld sagen "Sponsor.Last_Name, Sponsor.Erster_Name" statt "13".

Wie kann ich meine Serialisierung beheben?

JSON-Daten: {"totalCount": "2", "activities": [{"pk": 1, "model": "app.activity", "fields": {"activity_date": "2010 -12-20" , "Beschreibung": "meine Tätigkeit", "Sponsor": 13, "Lage": 1, ....

Modellcode:

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") 

Antwort

1

The docs scheinen genau zu erklären, Wie macht man das. Lesen Sie den Teil über die Serialisierung von natürlichen Schlüsseln.

2

In Beziehungen zu den Serializer wie folgt aus:

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

alles, was Sie dann brauchen, ist:

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

Dann stellen Sie sicher, dass auch die django Bibliothek wadofstuff installiert haben.

Hoffe, das hilft!