tarantino Seleziona un COUNT usando il modello Django?



django tutorial (2)

Ci sono due modi principali per gestire questo:

  1. Usa il metodo QuerySet count di Django - semplicemente aggiungi count () alla fine del QuerySet appropriato
  2. Genera un aggregato su QuerySet - Aggregation è quando "recuperi i valori derivati ​​riassumendo o aggregando una raccolta di oggetti". Rif: Django Aggregation Documentation

I link sopra sono relativi alle sezioni applicabili della documentazione di Django.

Qualcuno sa se c'è un modo per selezionare solo il numero di righe corrispondenti a una query in Django? Ho una ricerca che ho scritto che divide i risultati in serie di 40, ma mi piacerebbe anche mostrare il numero totale di risultati. Potrei fare qualcosa come len (Model.objects.filter (name__icontains = search)), ma sembra che sarebbe grossolanamente inefficiente (dato che presumo che genererebbe un "SELECT * FROM model" e quindi tutti i risultanti oggetti). Eventuali suggerimenti?


Answer #1

Usa count() :

>>> Model.objects.count()
42
>>> Model.related_set.count()
102
>>> Model.related_set.filter(blah=42).count()
3




django