【问题标题】:Use a Max inside a Q query in Django在 Django 的 Q 查询中使用 Max
【发布时间】:2017-03-20 14:07:03
【问题描述】:

我正在使用 Django Q 对象从文本描述中自动构建复杂查询。

在我的一些查询中,我需要结合经典的 Q 查询,与 Max 运算符如:

Book.objects.filter(Q(....) & Q(...) ....).aggregate(Max('price'))

有没有办法将 Max 过滤器表示为 Q() 过滤器,这样我就可以使用一个简单的链:

filter(Q(...) & Q(...) & Qmax(...))

在我的查询生成器算法框架中会更方便

【问题讨论】:

    标签: sql django filter orm


    【解决方案1】:

    你可以这样写你的查询:

    from django.db.models import Max
    from django.db.models import Q
    
    query = Book.objects.all().aggregate(Max('price'))
    

    并使用此结果进一步过滤您的查询集:

    query_set = Book.objects.filter(Q(...) & Q(...) & Q(price= query['price__max']))
    

    【讨论】:

    • 谢谢普拉哈尔!这正是我一直在寻找的!顺便问一下,你知道它是否与 Postgres JSONField 的键值搜索兼容吗?
    • @matt 很高兴我的回答对您有所帮助。我不是 Postgres 方面的专家,但我认为它与 JSONField 兼容。我不太确定。
    猜你喜欢
    • 2015-11-12
    • 2014-08-12
    • 2015-02-28
    • 2016-03-31
    • 2021-09-15
    • 2012-09-04
    • 2013-08-21
    • 2012-10-16
    • 2014-02-06
    相关资源
    最近更新 更多