Django ORM获取每行的最新版本(内部联接)

时间:2019-01-31 18:00:44

标签: django django-models orm django-rest-framework django-orm

我有一个表(短版ofcourse)像以下

--------------------------------------------------------
|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字段,但仅适用于日期。 目前,我使用原始的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 个答案:

答案 0 :(得分:2)

Max应该使用整数:

from django.db.models import Max
simulations = Simulation.objects.values('name').annotate(max_version=Max('version'))