Come posso ottenere il conteggio di oggetti per un modello di Django modelli?

Mia sto applicazione Django sto recuperando tutti gli oggetti per un particolare modello, in questo modo:

secs = Sections.objects.filter(order__gt = 5)

Passo questo varbiles per i miei modelli e posso accedere a tutte le proprietà del Modello (come section.name, section.id, etc.

C’è un modello chiamato Books che ha un FK per il Sections modello. Quando ho scorrere il secs variabile nel mio modello, come posso accedere al conte di Libri per ogni Sezione? Qualcosa di simile {{ sec.Books.count }}??

Grazie

 

2 Replies
  1. 71

    Se Books ha un ForeignKey per Sections, quindi Django crea automaticamente una relazione inversa, da Sezioni di tornare ai Libri, che saranno chiamati books_set. Questo è un Manager, il che significa che è possibile utilizzare .filter(), .get() e .count() su di esso – che è possibile utilizzare nel modello.

    {{ sec.books_set.count }}

    (A proposito, si dovrebbe usare il singolare dei sostantivi per il vostro modello di nomi plurali – Book invece di Books. Un esempio di tale modello contiene le informazioni per un libro, non molti).

  2. 10

    Inoltre per quello che Daniel ha detto, Django crea inversione di relazioni automaticamente (come Daniel detto sopra) a meno che non si ignorano i loro nomi con il related_name argomento. Nel tuo caso specifico, sarebbe qualcosa di simile:

    class Book(models.Model):
        section = models.ForeignKey(Section, related_name="books")

    Poi si può accedere alla sezione libri di conte nel modello:

    {{ sec.books.count }}

    Come si scorge nella tua domanda.

Lascia un commento