【问题标题】:django serialize foreign key objectsdjango 序列化外键对象
【发布时间】:2012-05-17 10:22:44
【问题描述】:

已经有几个问题要求同样的事情。但它们是 2010 年的,对我没有太大帮助。所以我认为这可能是自 2010 年以来这方面的一些更新?

我在谷歌上找到了这个link,它解释了natural keys 的用法。但是我的问题是从django.contrib.auth.models.User 获取异物,所以它没有帮助。

我的问题如下。我想序列化 QuerySet 所以我也得到外键对象,因为我想将它作为 JSON 传递给客户端。 django.core 的序列化程序不会这样做。因此,在我的情况下,为了简单地解决问题,我在模型中添加了另一个字段以包含我需要的来自外来对象的值。但它却引入了冗余数据。

我的示例模型包含username,如果可能的话,我想删除它,而是通过外键获取它。

    user = models.ForeignKey(User)
    username = models.CharField(max_length=100, null=False)

【问题讨论】:

    标签: python django django-models django-serializer


    【解决方案1】:

    解决此问题的一种可能方法是根据查询集的返回构造您自己的字典对象。你会做这样的事情:

    queryset = Model.objects.all()
    list = [] #create list
    for row in queryset: #populate list
        list.append({'title':row.title, 'body': row.body, 'name': row.user.username})
    recipe_list_json = json.dumps(list) #dump list as JSON
    return HttpResponse(recipe_list_json, 'application/javascript')
    

    你需要导入 json 才能工作。

    import json
    

    【讨论】:

    【解决方案2】:

    您可以使用 Django REST 框架的serializers

    【讨论】:

      猜你喜欢
      • 2011-04-14
      • 2016-06-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-11-13
      • 1970-01-01
      • 2017-12-17
      • 2018-12-01
      相关资源
      最近更新 更多