【问题标题】:Django ORM get Latest version of each row (Inner Join)Django ORM 获取每行的最新版本(内连接)
【发布时间】: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

【问题讨论】:

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


    【解决方案1】:

    Max 应该使用整数:

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

    【讨论】:

    • 嗯...想知道我做错了什么!。不过,谢谢,那行得通!
    猜你喜欢
    • 2019-10-11
    • 1970-01-01
    • 2013-11-24
    • 2022-07-21
    • 2014-02-16
    • 1970-01-01
    • 1970-01-01
    • 2013-07-27
    相关资源
    最近更新 更多