【问题标题】:Getting the aggregate sum of a field from the other model in Listview从 Listview 中的其他模型获取字段的总和
【发布时间】:2018-05-14 13:57:14
【问题描述】:

我有以下两种型号:

models.py

class Model_Item(models.Model):
    item_name = models.CharField(max_length = 100, null = False, blank = False, unique = True)

    def __unicode__(self):
        return self.item_name

class Model_ItemTransaction(models.Model):
    item = models.ForeignKey(Model_Item, to_field = "item_name")
    item_sold = models.FloatField(null = True, blank = True)

    def __unicode__(self):
        return self.item

使用此列表视图:

views.py

class View_Item(ListView):
    def get_queryset(self):
        queryset = Model_Item.objects.all()
        queryset = queryset.annotate(
                sum_ = Sum(When(model_itemtransaction__item_sold))
            )
        return queryset

我的目标是获取每个项目的“item_sold”的总价值,并在 Listview 上显示这个值。我怎样才能做到这一点?

我一直在查看conditional expressionthis stackoverflow post,但无济于事。

【问题讨论】:

  • 你从不指定 what 来总结,只指定 when 来总结。

标签: django


【解决方案1】:

你不应该需要使用条件聚合,你只需要总和

 queryset = queryset.annotate(
    sum_ = Sum('model_itemtransaction__item_sold')
 )

【讨论】:

  • 请考虑将我的答案标记为正确的
  • 完成。抱歉耽搁了。以为我昨天做到了。
猜你喜欢
  • 1970-01-01
  • 2020-02-12
  • 1970-01-01
  • 2021-11-13
  • 2011-05-15
  • 1970-01-01
  • 2020-07-07
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多