Aggiungi valore del conteggio da impostare
-
10-12-2019 - |
Domanda
Sto usando Django-Taggtit per taggare gli elementi in un'applicazione di elenco TODO.
Sto cercando di elencare ciascuno dei tag insieme al numero di azioni associate a ciascun tag in modo che possa leggere:
Tag A (1)
Tag B (3)
Tag C (2)
.
Tag A ha 1 articolo, Tag B ha 3, ecc.
Ho aggiunto un campo booleano a Django-Taggtit.Quindi ora sto ottenendo un elenco di tag come questo:
visible_tags = Tag.objects.filter(visible=True).order_by('name')
hidden_tags = Tag.objects.filter(visible=False).order_by('name')
.
Posso ottenere il conteggio degli articoli (Azioni) come questo:
for tag in visible_tags:
print tag
print Action.objects.filter(tags__name__in=[tag]).count()
.
Ora voglio allegare questi conteggi al set di visible_tags e hidden_tags in modo che io possa iterare su di loro nel modello come questo:
{% for tag in visible_tags %}
{{ tag }} ({{ tag.count }})<br>
{% endfor %}
.
Come posso allegare un valore .Count a ciascun tag all'interno visible_tags e all'interno di Hidden_tags? Suppongo di dovertitare su tutti i tag in ogni set?
Soluzione
Utilizzare annotazioni: https://docs.djangoproject.com/en/Dev / Argomenti / DB / Aggregazione /
from django.db.models import Count
Tag.objects.annotate(action_count=Count('action'))
.
(potresti dover modificare quel po '. Indovina il nome correlato per Action
)