Django - 序列化为JSON,如何序列化FK用户对象

时间:2011-12-12 17:55:04

标签: django json serialization foreign-keys

我在一个页面上向服务器端发送请求以获取当前主题的评论列表。

像这样

localhost:8000 / getComments / 567,而567是主题ID。

然后,在我的django视图中,像这样:

def getProjectComments(request, pId):
    format = 'json'
    mimetype = 'application/javascript'  #'application/xml' for 'xml' format
    comments = PrjComment.objects.filter(prj=pId)
    data = serializers.serialize(format, comments)
    return HttpResponse(data,mimetype)

现在,问题是, 当我尝试在浏览器端使用jQuery.parseJSON(数据)时。

[
 {
   "pk": 10, 
    "model": "app.prjcomment", 
    "fields": 
     {
      "status": 1, 
      "time_Commented": "2011-12-11 17:23:56", 
      "prj": 1, 
      "content": "my comment 1", 
      "user": 25
     }
  }, 
  {
   "pk": 9, 
   "model": "app.prjcomment", 
   "fields": {
     "status": 1, 
     "time_Commented": "2011-12-11 17:23:51", 
     "prj": 1, 
     "content": "comment \u4e00\u4e2a", 
     "user": 33
   }
 } ..

我需要使用用户对象的一些详细信息。 (用户是模型PrjComment中的外键) 例如user.first_name将显示在评论列表中。

但这里只是用户的id。(“用户”:33) 我怎样才能做到这一点?谁可以帮忙? 非常感谢你

用户是Django auth_user。

1 个答案:

答案 0 :(得分:3)

简单的解决方案是指定您需要的值:

comments = PrjComment.objects.filter(prj=pId) \
                     .values('status','time_commented','prj','content','user__id',
                             'user__username','user__first_name')

<强>更新

要访问您的userprofile信息,请使用AUTH_PROFILE_MODULE设置中定义的表名。在我的例子中,该表称为userprofile,我将访问这样的数据:

values('user__userprofile__moreinfo')

其中moreinfo是您感兴趣的字段