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?

È stato utile?

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)

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top