python - Django 按组保留一个元素,然后在此查询集上使用属性
问题描述
我有一个像这样的模型:
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)
推荐阅读
- sql - 自联接表上的 MSAccess 缓慢更新
- php - 每 30 分钟返回不同的用户名 PHP
- php - Laravel:将模型注入其中时销毁触发从表中选择的方法
- c# - 在我的调度循环中重新分配 DateTime 对象的值时,DateTime 多线程 UDP Sender 具有非常不同的时间结果
- c# - 如何解决 MySqlException: Expected end of data packet 问题?
- python-3.x - Gmail API 读取凭据“utf-8”编解码器无法解码位置 0 的字节 0x80:无效的起始字节
- python - 为什么 append() 不遵循 if 语句的条件?
- python - 在引用不存在的 python enums.Enum 时强制执行“未解析的属性引用”
- debugging - 如何在 WebStorm 中调试 yarn / npm
- python-3.6 - 如何在vscode中为python unittest配置单元测试