2011-12-13 62 views
3

我想对我的店铺模型按其开放时间排序。商店模型包含is_open函数,该函数控制商店的开放时间范围,并在打开或未打开时生成布尔值。问题是我不想手动排序我的查询集,因为效率问题。我想如果我编写自定义注释函数,那么我可以更有效地过滤查询。自定义日期综合功能

所以我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输了...

+0

您能否给我们一些来自'Store'模型的代码,一个简短的数据例子和ex结果。 – Stan

回答