首页 文章

根据工作日,开放和关闭时间显示餐厅是开放还是关闭

提问于
浏览
0

我有一个餐厅和运营时间的模型,具有外键关系 . 例如,餐厅海景咖啡馆,其每周工作日的营业时间为

周五 - 上午10点 - 下午6:30

周四 - 上午10点 - 下午9:45

周三 - 上午10点 - 下午9:45

周二 - 上午10点 - 下午9:45

星期一 - 上午10点 - 下午9:45

周日 - 上午10点 - 晚上8点

我只能根据这样的开启和关闭时间进行检查

models.py

class OperatingTime(models.Model):
    MONDAY = 1
    TUESDAY = 2
    WEDNESDAY = 3
    THURSDAY = 4
    FRIDAY = 5
    SATURDAY = 6
    SUNDAY = 7

    DAY_IN_A_WEEK = (
        (MONDAY, 'Monday'),
        (TUESDAY, 'Tuesday'),
        (WEDNESDAY, 'Wednesday'),
        (THURSDAY, 'Thursday'),
        (FRIDAY, 'Friday'),
        (SATURDAY, 'Saturday'),
        (SUNDAY, 'Sunday'),
        )
    # HOURS = [(i, i) for i in range(1, 25)]
    restaurant = models.ForeignKey(Restaurant,related_name="operating_time")
    opening_time = models.TimeField()
    closing_time = models.TimeField()
    day_of_week = models.IntegerField(choices=DAY_IN_A_WEEK)

    @property
    def open_or_closed(self):
        operating_time = OperatingTime.objects.all()
        opening_time = operating_time.opening_time
        closing_time = operating_time.closing_time
        current_time =  datetime.now().time()
        weekday = operating_time.day_of_week
        if opening_time < current_time < closing_time:
            open_or_closed = True
        else:
            open_or_closed = False 
        return open_or_closed


@property
def open_or_closed(self):
    operating_time = OperatingTime.objects.all()
    opening_time = operating_time.opening_time
    closing_time = operating_time.closing_time
    current_time =  datetime.now().time()
    weekday = operating_time.day_of_week
    if opening_time < current_time < closing_time:
        open_or_closed = True
    else:
        open_or_closed = False 
    return self.open_or_closed

如果所有餐厅的餐厅每天都开放或关闭,我该怎么办?

1 回答

  • 0

    没有测试但它应该工作 .

    class OperatingTimeManager(models.Manager):
        # Use a model manager when accesing table data, use model methods only for row operations
    
        def get_open_restaurants(self, date=datetime.datetime.now()):
            # get the id's of open restaurants
            open_restaurants_ids = self.get_queryset().filter(opening_time__lte=date, closing_time__gt=date).values_list('restaurant__id', flat=True)
            # get the actual restaurants instances
            return Restaurant.objects.filter(id__in=open_restaurants_ids)
    
    
    class OperatingTime(models.Model):
        closing_time = fields.DateTimeField()
        opening_time = fields.DateTimeField()
        restaurant = fields.ForeignKey(Restaurant)
    
        objects = OperatingTimeManager()
    

相关问题