سؤال

أنا أستخدم django-taggit لوضع علامة على العناصر في تطبيق قائمة المهام.

أحاول سرد كل علامة من العلامات مع عدد الإجراءات المرتبطة بكل علامة بحيث يمكن قراءتها:

Tag A (1)
Tag B (3)
Tag C (2)

تحتوي العلامة "أ" على عنصر واحد، والعلامة "ب" تحتوي على 3 عناصر، وما إلى ذلك.

لقد أضفت حقلاً منطقيًا إلى Django-taggit.والآن أحصل على قائمة بالعلامات مثل هذا:

visible_tags = Tag.objects.filter(visible=True).order_by('name')
hidden_tags = Tag.objects.filter(visible=False).order_by('name')

يمكنني الحصول على عدد العناصر (الإجراءات) مثل هذا:

for tag in visible_tags:
    print tag
    print Action.objects.filter(tags__name__in=[tag]).count()

أريد الآن إرفاق هذه الأعداد بمجموعة visual_tags و Hidden_tags حتى أتمكن من التكرار عليها في القالب مثل هذا:

{% for tag in visible_tags %}
    {{ tag }} ({{ tag.count }})<br>
{% endfor %}

كيف يمكنني إرفاق قيمة .count لكل علامة ضمن visual_tags وضمن Hidden_tags؟ أفترض أنه يتعين علي التكرار على جميع العلامات في كل مجموعة؟

هل كانت مفيدة؟

المحلول

استخدام التعليقات التوضيحية: https://docs.djangoproject.com/en/dev/topics/db/aggregation/

from django.db.models import Count

Tag.objects.annotate(action_count=Count('action'))

(قد تضطر إلى تعديل ذلك قليلاً.أعتقد على الاسم ذي الصلة لـ Action)

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top