Ich möchte die Anzahl der Elemente für jede Liste auflisten. Wie kann ich diese Nummer in einer einzelnen Abfrage statt in einer Abfrage für jede Liste finden? HierDjango: Abfragen optimieren
ist eine vereinfachte Version meiner aktuellen Template-Code:
{% for list in lists %}
<li>
{{ listname }}:
{% with list.num_items as item_count %}
{{ item_count }} item{{ item_count|pluralize }}
{% endwith %}
</li>
{% endfor %}
Listen geführt wird, wie: List.objects.filter (user = user)
und NUM_ITEMS ist eine Eigenschaft des List-Modell :
def _get_num_items(self):
return self.item_set.filter(archived=False).count()
num_items = property(_get_num_items)
Dieser fragt SELECT COUNT(*) FROM "my_app_item" WHERE...
n-mal, wobei n die Anzahl der Listen ist. Ist es möglich, hier eine einzige Abfrage zu machen?
http://docs.djangoproject.com/en/dev/topics/db/aggregation/ –
Ignacio, Er fragt, wie man die "gruppierten Aggregate in einer einzigen Abfrage" erhält, auf die die Dokumentation, auf die Sie verweisen, nicht verweist. Ich rede nicht darüber. –
@Lakshman: Nur wenn Sie es nicht lesen. –