【问题标题】:Django json serialization problemDjango json序列化问题
【发布时间】:2011-05-30 14:27:49
【问题描述】:

我在序列化 django 对象时遇到了困难。问题是有外键。我希望序列化具有来自引用对象的数据,而不仅仅是索引。

例如,我希望赞助商数据字段显示“sponsor.last_name,sponsor.first_name”而不是“13”。

如何修复我的序列化问题?

json 数据: {“totalCount”:“2”,“活动”:[{“pk”:1,“模型”:“app.activity”,“字段”:{“活动日期”:“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")

【问题讨论】:

    标签: django json serialization


    【解决方案1】:

    像这样向序列化器添加关系:

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

    那么你只需要:

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

    然后确保您还安装了 django 库 wadofstuff。

    希望这会有所帮助!

    【讨论】:

      【解决方案2】:

      The docs 似乎准确地解释了如何做到这一点。阅读关于自然键序列化的部分。

      【讨论】:

        【解决方案3】:

        这个小库对 django 来说非常方便:http://code.google.com/p/wadofstuff/wiki/DjangoFullSerializers

        它允许比标准编码器更多的自定义。

        【讨论】:

          【解决方案4】:

          any2any 还包含允许完全自定义输出格式的序列化程序:

          【讨论】:

            猜你喜欢
            • 2021-11-17
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多