Django for pros:如何按开始时间和持续时间查询时隙?F()表达式? 问题
如何查询数据库中与我查询的特定下午5点到7点时段相交的时段 逻辑是这样开始的:Django for pros:如何按开始时间和持续时间查询时隙?F()表达式? 问题,django,postgresql,Django,Postgresql,如何查询数据库中与我查询的特定下午5点到7点时段相交的时段 逻辑是这样开始的: Q(start_time__lt=start_hour) & Q(duration__gt=comparison_python_function(F('start_time'), query_start_time) 据我所知,我可以做一些简单的操作,比如F('column_name')+1。但是,在我的例子中,我需要一个python公式来计算TimeField和DecimalField之间的关系。据我所知
Q(start_time__lt=start_hour) &
Q(duration__gt=comparison_python_function(F('start_time'), query_start_time)
据我所知,我可以做一些简单的操作,比如F('column_name')+1
。但是,在我的例子中,我需要一个python公式来计算TimeField
和DecimalField
之间的关系。据我所知,这是不可能的
如果这两列不能直接比较,但相互依赖,那么如何处理查询时隙?或者如果这不能做到,我怎么做?我是否错过了另一种方法
一段历史:
我需要在数据库中存储时间段。我尝试了start\u time
和end\u time
这种方法的问题是,在午夜之后,end\u时间
变得比start\u时间
小,这会把一切都搞砸
采用开始时间
和持续时间
的方法更有意义。开始时间类型为models.TimeField()
,持续时间类型为models.DecimalField()
这里的大问题是查询数据库,如前所述。
将Django 1.7与Postgres一起使用Django 1.8(LTS版本)引入了一个新的版本,即将发布(可能是本周三)。如果升级是你的选择,我建议你使用它。它使用PostgreSQL的本机
interval
数据类型。我相信有第三方应用程序在1.7版中实现了同样的功能。否则,它将需要一点自定义SQL。即使不太理想,1.8c1也可以通过DurationField
将postgrestimestamp
和interval
混合使用,谢谢。我希望看到一个比升级更简单的解决方案。