2011-12-12 62 views
2

我在一个页面上向当前主题的评论列表发送一个请求到服务器端。Django - 序列化为JSON,如何序列化一个FK用户对象

这样

本地主机: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(“user”:33) 我该怎么做?任何人可以提供帮助吗? 非常感谢你

用户是Django的auth_user。

+0

最后的领域,我所用的原始SQL来实现此功能。 – Dan

回答

3

最简单的解决办法是指定您需要的值:

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

更新:

要访问您的用户配置文件信息的使用在你的AUTH_PROFILE_MODULE设置中定义的表名。在我的情况下,表称为USERPROFILE,我会像这样访问的数据:

values('user__userprofile__moreinfo') 

其中moreinfo是你感兴趣的

+0

非常感谢你,它适用于我,但这里带来另一个问题。我无法访问filter()。values()中的'user.get_profile'。 user__first_name可以获取first_name,但我无法获取userprofile表中的用户属性。我试过user__get_profile,这对我不起作用。有什么建议么?谢谢。 – Dan

+0

如果您满意,请将答案标记为已接受。 – Gevious

+0

用户配置文件仍然无法在settings.xml中工作AUTH_PROFILE_MODULE ='hedan.UserProfile'====> FieldError at/projects/morecomments/1/11 无法将关键字'user__UserProfile__telephone'解析为字段。选项有:cId,内容,prj,回复,状态 – Dan