我有一个营业时间需要比较,如果营业时间超过午夜,我会得到不完整的结果
我的模型
class Hours(models.Model):
dayofweek = models.ForeignKey('Dayofweek')
opentime = models.TimeField(blank=True, null=True)
closetime = models.TimeField(blank=True, null=True)
...
如果我只需要显示时间,一切正常,例如: 周六下午 5 点 - 凌晨 2 点
现在,当我尝试查询营业时间以检查企业是否营业时,午夜过后的营业时间将为 exists()
返回 False
:
我的问题
if Hours.objects.filter(
business__id=id,
dayofweek__pyday=dt,
opentime__lte=mytime,
closetime__gte=mytime).exists():
#do something
有什么建议可以告诉 Django 凌晨 2 点是下午 5 点之后吗?
最佳答案
一天可以有多个时段,但无论如何,一天在晚上 11:59 结束。如果这延长到第二天,你必须打破你的时间间隔。所以你的过滤器的逻辑将是这样的......
# Spans over 2 days
if opentime > closetime:
Hours.objects.filter(
business_id=id,
dayofweek_pyday=dt,
opentime_tye=myOpenTime,
closetime_gte=11:59:99
).exists() ||
Hours.objects.filter(
business_id=id,
# Next date
dayofweek_pyday=dt + 1,
opentime_tye=00:00:00,
closetime_gte=myCloseTime
).exists()
# Spans over 1 day
else:
Hours.objects.filter(
business__id=id,
dayofweek__pyday=dt,
opentime__lte=myOpentime,
closetime__gte=myClosetime).exists()
我不了解 Django,所以这只是一些伪代码和我会使用的替代方法。
关于python - Django 午夜营业时间后 TimeField 比较错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30676702/