按计数的Django订单
我有这些模型:按计数的Django订单,django,Django,我有这些模型: class Project(models.Model): title=models.CharField(max_length=80)date_created=models.DateTimeField(auto_now_add=True)e) category = models.ForeignKey(Category) class Category(models.Model): name = models.CharField(max_length=80)
class Project(models.Model):
title=models.CharField(max_length=80)date_created=models.DateTimeField(auto_now_add=True)e)
category = models.ForeignKey(Category)
class Category(models.Model):
name = models.CharField(max_length=80)
以下观点:
cat_list = Category.objects.order_by(order_by)
for c in cat_list:
count = Project.objects.filter(category__id=c.id).count()
setattr(c, 'count', count)
现在如何按计数属性排序?正确的方法是使用。这将使数据库查询量减少到1,并且排序将是一个简单的
order\u by
函数:
from django.db.models import Count
cat_list = Category.objects.annotate(count=Count('project_set__id')).order_by('count')