我目前在我的Django应用程序中有一行:
db.execute("SELECT SUM(price * qty) FROM inventory_orderline WHERE order_id = %s", [self.id])
我宁愿通过我的Django提供的模型界面执行此操作,但找不到任何引用。
我很确定这可以通过注释来完成,但这些示例仅涵盖了其中一些,我在文档中找不到列表。
我想做这样的事情:
self.line_items.annotate(lineprice=Product('orderline__price', 'orderline__qty')).aggregate(Sum('lineprice'))
有人可以建议使用注释类来执行乘法吗?更好的是,列出所有这些注释/聚合类的API的链接?
答案 0 :(得分:1)
不幸的是,aren't enough内置了聚合函数,具体而言,没有一个用于Product。
但除了必须编写“非简明”ORM查询之外,这并不会限制您。特别针对您的情况,您应该能够:
self.line_items.extra(select=("lineprice": "orderline__price*orderline__qty")).aggregate(Sum('lineprice'))
答案 1 :(得分:0)
没有明确记录,但这可以通过F()
函数完成:
from django.db.models import F
self.line_items.annotate(lineprice=F('orderline__price') * F('orderline__qty')).aggregate(Sum('lineprice'))