Django ORM 获取每行的最新版本(内连接)
Posted
技术标签:
【中文标题】Django ORM 获取每行的最新版本(内连接)【英文标题】:Django ORM get Latest version of each row (Inner Join) 【发布时间】:2019-06-25 06:32:28 【问题描述】:我有一张如下表(当然是短版)
--------------------------------------------------------
|id | Simulation_Name | Simulation_Version | sim_key |
--------------------------------------------------------
| 1 | MySim1 | 1 | 10 |
| 2 | MySim1 | 2 | 10 |
| 3 | MySim2 | 1 | 11 |
| 4 | MySim2 | 2 | 11 |
--------------------------------------------------------
在前端,我只想显示每个模拟的最新版本。对于如何使用 Django ORM 执行此操作,我将不胜感激。我知道有一个 Max 字段,但它只适用于日期.. 目前,我正在使用带有内部连接的 Raw SQL 来实现这一点。 关于 ORM 的任何指针?提前致谢
我现在就是这样做的,
SELECT *
FROM
simulation_table AS A INNER JOIN
(SELECT id, max(simulation_version) as max_version
from
simulation_table
group by sim_key) AS B
ON
A.sim_key= B.sim_keyAND A.simulation_version= B.simulation_version
【问题讨论】:
【参考方案1】:Max
应该使用整数:
from django.db.models import Max
simulations = Simulation.objects.values('name').annotate(max_version=Max('version'))
【讨论】:
嗯...想知道我做错了什么!。不过,谢谢,那行得通!以上是关于Django ORM 获取每行的最新版本(内连接)的主要内容,如果未能解决你的问题,请参考以下文章
使用 django ORM 获取只有最新孩子的父母的优化方式