【问题标题】:Custom Date Aggregate Function自定义日期聚合函数
【发布时间】:2012-01-19 07:28:03
【问题描述】:

我想按我的 Store 模型的开放时间对其进行排序。 Store 模型包含 is_open 函数,该函数控制 Store 的开放时间范围,并在它是否打开时生成一个布尔值。问题是由于效率问题,我不想手动对我的查询集进行排序。我想如果我编写一个自定义注释函数,那么我可以更有效地过滤查询。

于是我google了一下,发现我可以扩展Django的聚合类。据我了解,我必须使用预定义的 sql 函数,如 MAX、AVG 等。问题是我想检查今天的日期是否在给定的时间间隔列表中。所以任何人都可以帮助我应该使用哪个 sql 名称?

编辑

我想把代码放在这里,但它真的是意大利面条。一页长的代码只生成时间间隔并检查合适的时间间隔。

我想避免:

alg= lambda r: (not (s.is_open() and s.reachable))
sorted(stores,key=alg)

并替换为:

Store.objects.annotate(is_open = CheckOpen(datetime.today())).order_by('is_open')

但我完全不知道如何编写 CheckOpen...

【问题讨论】:

  • 能否给我们一些来自Store模型的代码,一个简短的数据示例和预期结果。

标签: django annotations aggregate


【解决方案1】:

查看extra 的文档

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-11-05
    • 1970-01-01
    • 2016-01-30
    • 1970-01-01
    • 2018-06-29
    • 1970-01-01
    • 2016-10-12
    相关资源
    最近更新 更多