2010-04-11 7 views
3

Question simple - excuses si c'est un doublon, mais je ne trouve pas la réponse si c'est le cas.Django: obtient le compte de l'élément ForeignKey dans le modèle?

J'ai un modèle d'utilisateur et un modèle de soumission, comme ceci:

class Submission(models.Model): 
    uploaded_by = models.ForeignKey('User') 
class User(models.Model): 
    name = models.CharField(max_length=250) 

Comment puis-je indiquer le nombre de présentations faites par chaque utilisateur dans le modèle ? J'ai essayé {{ user.submission.count }}, comme ceci:

for user in users: 
    {{ user.name }} ({{ user.submission.count }} submissions) 

mais pas de chance ...

Répondre

6

Essayez cette

{{user.submission_set.all|length}} 
+6

Oui, vous pouvez même faire {{user.submission_set.count}}. Assurez-vous de lire sur les relations django. Ils sont si importants pour bien comprendre les modèles. http://docs.djangoproject.com/fr/dev/topics/db/models/#be-careful-with-related-name –

+0

Merci - et merci @Casey pour le conseil, je le ferai. – AP257

+0

Merci - J'ai lu mais j'ai une autre question rapide. Si la classe Submission a un champ booléen appelé 'problem_submission', existe-t-il un moyen d'obtenir le nombre de toutes les soumissions liées où le champ 'problem_submission' n'est pas défini sur True? – AP257

2

Vous avez oublié le "set". Il devrait être {{ user.submission_set.count }}. Vous pouvez toujours modifier le nom associé, mais la valeur par défaut est <fk class name>_set. Pour plus voir le relations documentation.

Questions connexes