【问题标题】:Django annotate not working with two appsDjango注释不能与两个应用程序一起使用
【发布时间】:2017-08-29 12:47:28
【问题描述】:

我的项目中有两个应用程序。第一个应用的 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}]>

如何按站点分组?

【问题讨论】:

  • 试试repair.objects.values('site__name').annotate(sum_site=Sum('summ')).order_by()

标签: django django-queryset django-orm


【解决方案1】:

您应该注释 sites 而不是 repairs

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

【讨论】:

    【解决方案2】:

    neverwalkaloner 在评论中得到回答:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-10-03
      • 2010-10-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-09-19
      • 2018-03-26
      • 2018-09-26
      相关资源
      最近更新 更多