إضافة قيمة العد لتعيين
-
10-12-2019 - |
سؤال
أنا أستخدم 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
)