0

我想按顺序订购,entry_count但似乎(来自 django 错误)我只能按名称和状态订购。entry_count在此示例中如何订购?谢谢

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

模型.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()
4

1 回答 1

1

您可以通过使用聚合来做到这一点:

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

像这样,您将在一个查询中获得所有计数,并且所有类别对象都将具有entry_count,因此您可以@property从模型中删除 。

于 2013-10-05T21:30:02.117 回答