Django ORM:如何根据另一个属性查询最新的行

时间:2015-12-18 21:23:34

标签: python django postgresql

我有一张桌子:

product_id  |  sales_rank  |  updated_on
1           |  572         |  2015-12-17 15:19:41
2           |  1000        |  2015-12-17 15:19:42
1           |  500         |  2015-12-18 15:19:41
2           |  1659        |  2015-12-18 15:19:42

我有兴趣进行查询,我只在Django ORM中选择此表中的最后两行。

我想要所有唯一商品ID的最新更新行。我怎么能做到这一点?

这是我现在正在做的肮脏(且昂贵)的方式:

sorted(Product.objects.distinct("product_id"), key=operator.attrgetter('sales_rank'))

1 个答案:

答案 0 :(得分:0)

请尝试:

from django.db.models import Max
Product.objects.values('product_id').annotate(latest=Max('updated_on'))