Django午夜营业时间TimeField比较错误 [英] Django After Midnight Business Hours TimeField Comparison Error
问题描述
我有一个营业时间,我需要比较,如果营业时间过去了午夜,我会得到不完整的结果。
I have a Business Hours that I need to compare and I'm getting incomplete results if the business hours are past midnight
我的模型
class Hours(models.Model):
dayofweek = models.ForeignKey('Dayofweek')
opentime = models.TimeField(blank=True, null=True)
closetime = models.TimeField(blank=True, null=True)
...
如果我只需要显示几小时,所有工作都可以这样做:
星期六下午5点 - 2点
If I just need to display hours everything works OK such: Saturday 5pm - 2am
现在,当我'试图查询几个小时以检查业务是否开放,那些过去午夜的人将返回 False
exists()
:
Now when I'm trying to query the hours to check if the business is even open, those with past midnight hours will return False
for exists()
:
我的查询
if Hours.objects.filter(
business__id=id,
dayofweek__pyday=dt,
opentime__lte=mytime,
closetime__gte=mytime).exists():
#do something
任何建议如何告诉Django上午2点在下午5点之后?
Any suggestions how to tell Django that the 2am is after 5pm?
推荐答案
What about using F and Q expressions through two queries:
一个简单的例子(开放时间<=关闭时间)
one for the simple case (opening time <= closing time)
Hours.objects.filter(
opentime__lte=F('closetime'),
business__id=id,
dayofweek__pyday=dt,
opentime__lte=mytime,
closetime__gte=mytime).exists():
,一个用于奇数情况(关闭时间<开放时间)
and one for the odd case (closing time < opening time)
Hours.objects.filter(
opentime__gt=F('closetime'),
business__id=id,
dayofweek__pyday=dt,
Q(opentime__lte=mytime) | Q(closetime__gte=mytime)).exists():
这篇关于Django午夜营业时间TimeField比较错误的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!