Django 按组保留一个元素,然后在此查询集上使用 属性
Django keep one element by group and then use property on this queryset
我有这样一个模型:
class Extension(models.Model):
name = models.CharField(max_length=32)
version = models.CharField(max_length=16)
@property
def path(self):
return something
我想获取一个仅包含每个名称的最新版本的扩展查询集,然后为每个最近的扩展获取一个元组(名称、路径)。
我试过了
latests = Extension.objects.values('name').annotate(last=Max('version'))
但它给了我一个没有属性访问权限的字典
我该怎么做?
这是您可以做到的一种方法:
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)
我有这样一个模型:
class Extension(models.Model):
name = models.CharField(max_length=32)
version = models.CharField(max_length=16)
@property
def path(self):
return something
我想获取一个仅包含每个名称的最新版本的扩展查询集,然后为每个最近的扩展获取一个元组(名称、路径)。
我试过了
latests = Extension.objects.values('name').annotate(last=Max('version'))
但它给了我一个没有属性访问权限的字典
我该怎么做?
这是您可以做到的一种方法:
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)