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')