我想按entry_count
订购,但似乎(从django错误)我只能按名称和状态订购。如何在此示例中按entry_count
订购?感谢
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()
答案 0 :(得分:1)
您可以使用aggregation:
执行此操作from django.db.models import Count
Category.objects.annotate(
entry_count=Count('entry_set')
).order_by('-entry_count')
像这样,您将获得一个查询中的所有计数,并且所有类别对象都将entry_count
,因此您可以从模型中删除@property
。