Python Django order by queryset from a method

Python Django order by queryset from a method,python,django,django-models,Python,Django,Django Models,我想按entry\u count订购,但(从django错误来看)我似乎只能按姓名和状态订购。在本例中,我如何按条目\计数下单?谢谢 Category.objects.filter(status='Published').order_by('-entry_count') Model.py class Category(models.Model): """ Entry Categories. """ name = models.CharField(max_leng

我想按
entry\u count
订购,但(从django错误来看)我似乎只能按姓名和状态订购。在本例中,我如何按
条目\计数下单?谢谢

Category.objects.filter(status='Published').order_by('-entry_count')
Model.py

class Category(models.Model):
    """
    Entry Categories.
    """
    name = models.CharField(max_length=60, help_text="Title of Category")
    status = models.CharField(max_length=16, choices=STATUS_CHOICES,
                              default="Draft", )
    @property
    def entry_count(self):
        return Entry.objects.filter(category=self.id).count()
您可以使用以下方法进行此操作:

这样,您将在一个查询中获得所有计数,并且所有类别对象都将具有
条目\u计数
,因此您可以从模型中删除
@属性

from django.db.models import Count
Category.objects.annotate(
    entry_count=Count('entry_set')
).order_by('-entry_count')