Django通过分组保留一个元素,然后在这个查询集上使用属性。

问题描述 投票:1回答:1

我有一个这样的模型。

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

    @property
    def path(self):
        return something

我想得到一个只包含每个名字的最后一个版本的Extension查询集 然后得到每个最近的Extension的元组(名字,路径)。

我尝试了

latests = Extension.objects.values('name').annotate(last=Max('version'))

但它给了我一个没有属性访问的dict。

我如何才能做到这一点?

python django django-models django-queryset
1个回答
2
投票

这是你可以做到的一种方法。

latests = Extension.objects.values('name').annotate(Max('version'))
q_statement = Q()
for pair in latests:
    q_statement |= (Q(name=pair['name']) & Q(version=pair['version__max']))
extensions = Extension.objects.filter(q_statement)
© www.soinside.com 2019 - 2024. All rights reserved.