django - Django ORM:需要每个值的最大 ID 值列表
问题描述
我的表大致是这样的:
ID | DISPLAY | CATEGORY | NAME
1 | true | 1 | some name
2 | true | 1 | some other name
3 | true | 1 | some name
4 | true | 2 | something else
我想要一个结果集,它会给我一个给定类别的名称和最大 ID,并且 display = true,所以在 SQL 形式中:
select name, max(id) as recent
from TABLE
where category = 1 and display = true
我已经这样做了:
rs = TABLE.objects.filter(category=1, display=True).values('name').annotate(recent=Max('id'))
但我得到一个随机 ID,而不是最大 ID。这是为什么?我需要做什么?
解决方案
您的 django 查询返回分组列“名称”的列表和该组的 max_id。在您的示例中,结果是:
Queryset({'name':'some name', recent="3"},{'name':'some other name', recent="2"})
如果您需要这些过滤器的 max_id,您可以使用aggregate
函数:
rs = TABLE.objects.filter(category=1, display=True).aggregate(recent=Max('id'))
推荐阅读
- web - 错误 Laravel 5.6,Symfony \ Component \ HttpKernel \ Exception \ MethodNotAllowedHttpException"
- android - 为什么大多数人在改造中使用拦截器添加身份验证标头?
- .net - 如何获取 itemId 以将文件上传到 BIM 360?
- reactjs - 如何在反应排序树的特定节点中添加按钮
- ruby-on-rails - Rails: :save 返回 NoMethodError
- jquery - Laravel 路由上的 Ajax 调用,返回一个包含 ChartJS 标签日期的 json 编码数组
- python - Python:将毫秒转换为日期时间对象
- python - keras 自定义损失分类错误数
- angular - ngb-datepicker 更改工具提示语言
- java - 如何将 JSON 对象显示到 TextView?任何建议将不胜感激