自定义日期聚合函数

时间:2011-12-13 12:06:42

标签: django annotations aggregate

我希望按照开放时间对商店模型进行排序。存储模型包含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 ......

1 个答案:

答案 0 :(得分:1)

查看extra

的文档