选择最小值和分组

时间:2015-07-24 10:56:14

标签: python mysql django django-models django-orm

我有下表:

id | product_id | quantity
--------------------------
1  | 222        | 25       
2  | 222        | 35
3  | 223        | 10

现在我想选择按product_id分组的最低数量。在SQL中,这可以作为

SELECT product_id, MIN(quantity) FROM my_table GROUP BY product_id

此查询的结果如下

product_id | MIN(quantity)
--------------------------
222        | 25
223        | 10

但是,我如何使用Django的数据库模型来做同样的事情?

我试过

myModel.objects.filter(product__in=product_ids).annotate(Min("quantity")).values_list("product", "quantity__min")

这将返回完整的表格。

1 个答案:

答案 0 :(得分:1)

objects = (MyModel.objects
           .values('product')
           .annotate(Min('quantity'))
           # if you want to get values_list
           .values_list('product', 'quantity__min'))

https://docs.djangoproject.com/en/1.8/topics/db/aggregation/#values