django - 从 Listview 中的其他模型获取字段的总和
问题描述
我有以下两个模型:
模型.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
使用此列表视图:
视图.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 上显示这个值。我怎样才能使这项工作?
我一直在查看条件表达式和this stackoverflow post,但无济于事。
解决方案
你不应该需要使用条件聚合,你只需要总和
queryset = queryset.annotate(
sum_ = Sum('model_itemtransaction__item_sold')
)
推荐阅读
- selenium - 当 selenium 脚本以无头模式运行时,应用程序无法录制声音
- c++ - Is it ok to have Interface with void* as arguments? what is a better practice?
- php - 如果我的 php 会话未设置,则会收到通知。如何解决这个问题?(注意:未定义的索引:myname ...)
- html - 致命:远程来源已经存在
- django - Scrapyrt 不使用回调函数
- excel - COUNTIFS、数字、通配符、公式
- java - 输入到 ArrayList Java 的整数列表
- python - 如何在pylab matplotlib python中分层嵌套子图?
- php - htaccess 将子文件夹 .php 文件重定向到斜杠
- vb.net - VB.net - ReadAllLines - 文件未声明错误