Django ORM 方式获取每个分组按照指定字段排序后的第一条记录

2,105 阅读1分钟

假设存在一张制品表,需要从中取每个制品的最新版本

ORM 模型如下:

class Artifact(models.Model):
    name = models.CharField(max_length=32)
    version = models.CharField(max_length=16)

表中数据如下:

表中数据

预期查询结果为:

预期查询结果

则 ORM 语句为:

Artifact.objects.order_by('name', '-version').distinct('name')
# <QuerySet [<Artifact: Artifact object (6)>, <Artifact: Artifact object (3)>]>