2011-12-12 7 views
2

Je suis sur une page qui envoie une requête au serveur pour une liste de commentaires du sujet en cours.Django - sérialiser en JSON, comment sérialiser un objet utilisateur FK

comme celui-ci

localhost: 8000/getComments/567, tandis que 567 est l'identifiant de sujet.

puis, à mon avis django, comme ceci:

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) 

Maintenant, la question est, lorsque je tente d'utiliser jQuery.parseJSON (données) du côté du navigateur.

[ 
{ 
    "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 
    } 
} .. 

Je dois utiliser des informations détaillées sur l'objet utilisateur. (l'utilisateur est une clé étrangère dans le modèle PrjComment) tel que user.first_name à afficher dans la liste des commentaires.

mais ici ce n'est qu'un identifiant pour l'utilisateur. ("User": 33) Comment puis-je faire cela? Quelqu'un qui peut aider? Merci beaucoup

l'utilisateur est le Django auth_user.

+0

Enfin, j'ai utilisé la première sql pour mettre en œuvre cette fonctionnalité . – Dan

Répondre

3

La solution facile serait de spécifier les valeurs dont vous avez besoin:

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

Mise à jour:

Pour accéder à vos informations userprofile utiliser le nom de la table tel que défini dans les paramètres de votre AUTH_PROFILE_MODULE. Dans mon cas, la table est appelée userprofile, et je voudrais accéder aux données comme ceci:

values('user__userprofile__moreinfo') 

où moreinfo est le domaine qui vous intéresse

+0

merci beaucoup, ça marche pour moi, mais voici une autre question. Je ne peux pas accéder à 'user.get_profile' dans le filtre(). Values ​​(). L'utilisateur__first_name peut obtenir le first_name, mais je ne peux pas obtenir les propriétés de l'utilisateur dans la table userprofile. J'ai essayé user__get_profile, cela ne fonctionne pas pour moi. Aucune suggestion? Merci. – Dan

+0

s'il vous plaît marquer la réponse comme accepté si vous êtes satisfait. – Gevious

+0

le fichier userprofile ne fonctionne toujours pas pour moi dans settings.xml AUTH_PROFILE_MODULE = 'hedan.UserProfile' ====> FieldError dans/projects/morecomments/1/11 Impossible de résoudre le mot clé 'user__UserProfile__telephone' dans le champ. Les choix sont: cId, contenu, prj, replys, statut – Dan