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