两个字段注释的产品

Cog*_*gsy 5 django django-models

我目前在我的Django应用程序中有一行如下:

db.execute("SELECT SUM(price * qty) FROM inventory_orderline WHERE order_id = %s", [self.id])
Run Code Online (Sandbox Code Playgroud)

我宁愿通过我的Django提供的模型界面执行此操作,但找不到任何引用.

我很确定这可以通过注释完成,但这些示例仅涵盖了其中的一些,我在文档中找不到列表.

我想做这样的事情:

self.line_items.annotate(lineprice=Product('orderline__price', 'orderline__qty')).aggregate(Sum('lineprice'))
Run Code Online (Sandbox Code Playgroud)

任何人都可以建议使用注释类来执行乘法吗?更好的是,列出所有这些注释/聚合类的API的链接?

Lak*_*sad 1

不幸的是,没有足够的内置聚合函数,特别是没有用于产品的聚合函数。

但这不会以任何方式限制您,除了必须编写“不简洁”的 ORM 查询。针对您的具体情况,您应该能够执行以下操作:

self.line_items.extra(select=("lineprice": "orderline__price*orderline__qty")).aggregate(Sum('lineprice'))
Run Code Online (Sandbox Code Playgroud)

  • 这行不通。“aggregate”看不到“extra”引入的内容(“select”也需要一个字典,所以它需要“{}”而不是“()”) (11认同)