5

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

在谷歌上我找到了这个链接,它解释了自然键的用法。但是,我担心从中获取异物的问题,django.contrib.auth.models.User因此无济于事。

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

我的示例模型包含username我希望尽可能删除的模型,而是通过外键获取它。

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

2 回答 2

6

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

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
于 2012-05-08T22:08:21.800 回答
1

您可以使用 Django REST 框架的序列化程序。

于 2014-04-29T11:34:39.153 回答