Django 注释不适用于两个应用程序

Django annotate not working with two apps

我的项目中有两个应用程序。 Models.py 第一个应用的型号:

class repair(models.Model):
   site = models.ForeignKey('second.site')
   price = models.FloatField()
   …

Models.py 第二个应用的型号:

class site(models.Model):
   name = models.CharField(max_length = 250)

当我在 shell:

repair.objects.values('site__name').annotate(sum_site=Sum('price'))

我正在获取所有维修模型的物品及其价格:

<QuerySet [{'site__name': 'Site-1', 'count_ss': 1500.0}, {'site__name': 'Site-2', 'count_ss': 1500.0}, {'site__name': 'Site-1', 'count_ss': 800.0}, {'site__name': 'Site-1', 'count_ss': 230.0}, {'site__name': 'Site-2', 'count_ss': 90.0}]>

如何按站点分组?

您应该注释 sites 而不是 repairs.

site.objects.annotate(sum_site=Sum('repair__price'))

neverwalkaloner 在评论中得到回答:

repair.objects.values('site__name').annotate(sum_site=Sum('price')).order_by()