2010-08-18 2 views
2

J'ai un problème en référence à mes champs supplémentaires "THROUGH" m2m. Je peux faire référence au modèle lié (utilisateur), mais pas les détails supplémentaires sur le « par modèle » (LISTUSER)Django m2m A travers la référence de champs supplémentaires dans le template ++

Ma définition du modèle --- modèle utilisateur est intégré dans le modèle utilisateur Untouched.

class joblist(models.Model): 
    userdetail = models.ManyToManyField(User,through='userextra') 

class userextra(models.Model): 
    joblist = models.ForeignKey(joblist) 
    user = models.ForeignKey(User) 
    comments= models.CharField(max_length=16384, blank=True, null=True) 

Dans mon modèle -----

{% for row in joblist %} 
html here 
{% for item in row.userdetail.all %} 
{{item.username}}-"I want to print comments here" 
{% endfor %} 
{% endfor %} 

Ive a essayé {{item.userextra.comments}} {{item.comments}} {{item.douser.comments}}

Je reçois le détail du modèle « Utilisateur » mais je ne suis pas obtenir les champs supplémentaires sur le modèle userextra ????

Toute aide appréciée .... N

Répondre

0

Vous avez plus de potentiel backflip dans la vue que le modèle. Donc, bien que ce soit une solution inélégante, je suggère d'interroger le modèle direct dans la vue directement puis d'utiliser ce que vous obtenez pour annoter temporairement les éléments dans les lignes de votre liste de manière à ce que vous puissiez définitivement, proprement , faire row.foo.bar ou item.baz.boof, etc, puis passer cet ensemble annoté manuellement des résultats dans le modèle.

+0

Hmmm, je ne sais pas ce que vous voulez dire, pourriez-vous donner un exemple? Je fais déjà un peu de filtrage dans les vues, mais ça n'aide pas à l'afficher dans le template. Je ne sais pas comment/si réorganiser le Queryset? – Niall

+0

Mais si je parcours une liste de tâches dans le modèle, retourner à la vue est ... gênant. – Bryce

+0

Vous itérez et annotez dans la vue, puis recommencez dans le modèle - vous ne pouvez pas revenir à la vue depuis le modèle ... –

1

Je ne sais pas si vous avez encore besoin d'une réponse ... Je suis nouveau sur Python/Django mais je cherchais la même chose et votre question était haute dans Google lorsque je cherchais alors je pensais y répondre cas quelqu'un d'autre cherche.

Voici ce que j'ai pu trouver: Plutôt que de parcourir row.userdetail.all, essayez d'effectuer une itération sur row.userextra_set.all.

{% for row in joblist %} 
html here 
{% for item in row.userextra_set.all %} 
{{ item.user.username }} - {{ item.comments }} 
{% endfor %} 
{% endfor %} 
Questions connexes