เนื่องจากฉันสับสนเล็กน้อยเกี่ยวกับวิธีการจัดกลุ่มใน Django 1.1 ฉันคิดว่าฉันจะอธิบายรายละเอียดที่นี่ว่าคุณใช้มันอย่างไร ก่อนอื่นให้ทำซ้ำสิ่งที่ไมเคิลพูด:
ตามที่ฉันเพิ่งค้นพบคือวิธีดำเนินการกับ Django 1.1 aggregation API:
from django.db.models import Count
theanswer = Item.objects.values('category').annotate(Count('category'))
โปรดทราบว่าคุณต้องfrom django.db.models import Count
!
category__count
นี้จะเลือกเฉพาะหมวดหมู่และเพิ่มคำอธิบายประกอบที่เรียกว่า ทั้งนี้ขึ้นอยู่กับการสั่งซื้อเริ่มต้นนี้อาจจะเป็นสิ่งที่คุณต้องแต่ถ้าสั่งซื้อเริ่มต้นใช้สนามอื่น ๆ กว่าcategory
นี้จะไม่ทำงาน ด้วยเหตุนี้จึงมีการเลือกฟิลด์ที่จำเป็นสำหรับการสั่งซื้อและทำให้แต่ละแถวไม่ซ้ำกันดังนั้นคุณจะไม่ได้รับการจัดกลุ่มตามที่คุณต้องการ วิธีหนึ่งที่รวดเร็วในการแก้ไขปัญหานี้คือรีเซ็ตการสั่งซื้อ:
Item.objects.values('category').annotate(Count('category')).order_by()
สิ่งนี้ควรให้ผลลัพธ์ที่คุณต้องการ ในการตั้งชื่อคำอธิบายประกอบคุณสามารถใช้:
...annotate(mycount = Count('category'))...
จากนั้นคุณจะมีคำอธิบายประกอบที่เรียกmycount
ในผลลัพธ์
ทุกอย่างเกี่ยวกับการจัดกลุ่มนั้นตรงไปตรงมาสำหรับฉันมาก อย่าลืมตรวจสอบDjango aggregation APIสำหรับข้อมูลโดยละเอียดเพิ่มเติม