【问题标题】:Django ORM: need list of values with max ID for each valueDjango ORM:需要每个值具有最大 ID 的值列表
【发布时间】:2020-01-06 14:45:06
【问题描述】:

我的桌子大概是这样的:

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 django-models django-orm


    【解决方案1】:

    您的 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'))

    【讨论】:

    • 很遗憾这不起作用。它没有给我一个任务列表,它只是给了我查询的绝对最大值。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-08-26
    • 2017-06-11
    • 2015-09-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多