我在序列化django对象时遇到困难。问题是有外键。我希望序列化具有来自引用对象的数据,而不仅仅是索引。
例如,我希望赞助商数据字段说“sponsor.last_name,sponsor.first_name”而不是“13”。
如何修复序列化?
json数据: {“totalCount”:“2”,“activities”:[{“pk”:1,“model”:“app.activity”,“fields”:{“activity_date”:“2010-12-20”,“description “:”我的活动“,”赞助商“: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")
答案 0 :(得分:2)
像这样添加与序列化程序的关系:
activities_json = serializers.serialize("json", activities, relations=('sponsor',))
然后您只需要:
return HttpResponse(activities_json, mimetype="application/json")
然后确保你还安装了django library wadofstuff。
希望这有帮助!
答案 1 :(得分:1)
The docs似乎解释了如何做到这一点。阅读关于自然键序列化的部分。
答案 2 :(得分:1)
这个小型lib非常方便django:http://code.google.com/p/wadofstuff/wiki/DjangoFullSerializers
它允许比标准编码器更多的自定义。
答案 3 :(得分:0)
any2any 还包含允许完全自定义输出格式的序列化程序: