午夜营业时间后的Django TimeField比较错误

Way*_*ind 5 python django

我有一个营业时间需要比较,如果营业时间过了午夜,我会得到不完整的结果

我的模特

class Hours(models.Model):
  dayofweek = models.ForeignKey('Dayofweek')
  opentime = models.TimeField(blank=True, null=True)
  closetime = models.TimeField(blank=True, null=True)
  ...
Run Code Online (Sandbox Code Playgroud)

如果我只需要显示时间,一切正常,例如:周六下午 5 点 - 凌晨 2 点

现在,当我试图查询的时间来检查业务连开,那些过去的午夜凌晨将返回Falseexists()

我的查询

if Hours.objects.filter(
            business__id=id,
            dayofweek__pyday=dt, 
            opentime__lte=mytime, 
            closetime__gte=mytime).exists():
    #do something
Run Code Online (Sandbox Code Playgroud)

有什么建议可以告诉 Django 凌晨 2 点是下午 5 点之后吗?

Dr.*_*all 2

一天可以有多个时段,但无论如何,这一天都会在晚上 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()
Run Code Online (Sandbox Code Playgroud)

我不了解 django,所以这只是一些伪代码和我会使用的替代方法。