繁体   English   中英

使用不同的外键获取最大值 Django ORM

[英]Get max Value with Distinct Foreign key Django ORM

所以这是我的 Model。

class OrderLine(models.Model):
    product = models.ForeignKey(Product, on_delete=models.PROTECT, verbose_name="Product",      null=False)
    unit_price = models.DecimalField(null=True, max_digits=12, decimal_places=4, blank=True, verbose_name="Unit price")

我正在尝试使用多个产品 ID 进行过滤,一个产品可以有多个具有不同单价的 OrderLine。那么我如何才能为每个产品获取一条最大单价记录。

我试过了

to_lines = (OrderLine.objects.filter(transfer_id__in=to_ids,product_id__in=part_ids).values("unit_price").order_by("product_id").aggregate(Max("unit_price")))

但它返回所有产品中的一个。

您可以使用 GROUP BY 表达式作为

from django.db.models import Max

result = OrderLine.objects.values("product").annotate(max_per_prod=Max("unit_price"))

这几乎类似于 SQL 表达式

SELECT product_id, MAX(unit_price) FROM table_name GROUP BY product_id

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM