【发布时间】:2020-05-10 15:44:30
【问题描述】:
我有以下型号
models.py
class Category(models.Model):
label = models.CharField(max_length=100, unique=True)
description = models.CharField(max_length=255, blank=True)
class Expense(models.Model):
description = models.CharField(max_length=255, blank=True)
amount = models.DecimalField(max_digits=10, decimal_places=2, default=0.00)
category = models.ForeignKey(
Category,
on_delete=models.CASCADE,
null=True,
related_name='category'
)
class CategoryViewSet(viewsets.ModelViewSet):
queryset = Category.objects.order_by("-expense__expense")
我正在苦苦思考如何返回按费用模型中选择最多的类别排序的类别列表,例如:
<Expense category=3>
<Expense category=3>
<Expense category=2>
<Expense category=3>
<Expense category=1>
<Expense category=1>
我想按这个顺序返回:
<Category id=3>
<Category id=1>
<Category id=2>
解决方案是使用注释:
queryset = Category.objects.annotate(
expense_count=Count('category')).order_by('-expense_count')
【问题讨论】:
标签: django rest model foreign-keys