【问题标题】:Django QuerySet First in GroupDjango QuerySet 组中的第一个
【发布时间】:2014-01-15 09:06:07
【问题描述】:

我有一个如下所示的查询集:

{id, group_id, date}

对于以group_id 为键的每个组,我想返回id 和最早的date。我将如何在 django 查询中做到这一点?还是 order_by date 然后使用 python dict 来忽略第一个之后具有相同 group_id 的所有元素更有效?

【问题讨论】:

    标签: django django-queryset


    【解决方案1】:

    Django 并没有真正的GROUP BY 运算符。您可以尝试通过订购和distinct() 来模仿它。

    试试这样的:

    queryset.order_by('group_id', 'date').distinct('group_id')
    

    注意:group_id 必须在顺序中排在第一位才能执行distinct() 操作。

    【讨论】:

    • Kevin,我试过了,但出现了两个错误。一个是 TypeError: expected string or buffer 当我尝试使用 group_id 和 date 的 order_by 时(尽管它们各自工作)。另一个是我不能做 distinct('group_id') 而是找到了 values_list('group_id', flat=True).distinct() 的解决方法。对第一个有什么想法吗?
    • 啊,我明白了,不需要括号。我撞了你们俩。谢谢凯文。
    • 抱歉,内存不足,是的,没有括号,已更新。
    猜你喜欢
    • 2011-03-05
    • 2010-12-10
    • 2018-08-12
    • 1970-01-01
    • 2017-03-15
    • 2014-05-07
    • 1970-01-01
    • 2013-05-04
    • 2011-04-01
    相关资源
    最近更新 更多