Je suis mon Django je récupère tous les objets pour un modèle particulier comme ceci:
secs = Sections.objects.filter(order__gt = 5)
Je passe ces varbiles à mes modèles et je peux accéder à toutes les propriétés du modèle comme section.name
, section.id
, etc.
Il existe un modèle appelé Books
qui a un FK vers le modèle Sections
. Lorsque j'itère la variable secs
dans mon modèle, comment puis-je accéder au nombre de livres pour chaque section? Quelque chose comme {{ sec.Books.count }}
??
Je vous remercie
Si Books
a une ForeignKey pour Sections
, alors Django créera automatiquement une relation inverse des sections vers les livres, qui sera appelée books_set
. Il s'agit d'un gestionnaire, ce qui signifie que vous pouvez utiliser .filter()
, .get()
et .count()
dessus - et vous pouvez les utiliser dans votre modèle.
{{ sec.books_set.count }}
(Soit dit en passant, vous devez utiliser des noms singuliers pour les noms de votre modèle, pas des pluriels - Book
au lieu de Books
. Une instance de ce modèle contient des informations pour un livre, pas plusieurs.)
En plus de ce que Daniel a dit, Django crée automatiquement des relations inverses (comme Daniel l'a dit ci-dessus) sauf si vous remplacez leurs noms par l'argument related_name. Dans votre cas particulier, vous auriez quelque chose comme:
class Book(models.Model):
section = models.ForeignKey(Section, related_name="books")
Ensuite, vous pouvez accéder au nombre de livres de la section dans le modèle en:
{{ sec.books.count }}
Comme vous l'avez laissé entendre dans votre question.