Django - сериализация в JSON, как сериализовать объект FK User - PullRequest
2 голосов
/ 12 декабря 2011

Я на странице, которая отправляет запрос на серверную сторону для получения списка комментариев по текущей теме.

как это

localhost: 8000 / getComments / 567, а 567 - это идентификатор темы.

тогда, в моем представлении 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 для отображения в списке комментариев.

но здесь это только идентификатор пользователя. ("User": 33) Как я могу это сделать? Кто-нибудь, кто может любезно помочь? Большое спасибо

Пользователь Django auth_user.

1 Ответ

3 голосов
/ 12 декабря 2011

Простым решением будет указать нужные вам значения:

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 - интересующее вас поле

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...