我有餐厅和经营时间的模型,具有外键关系。 例如,餐厅海景咖啡馆,其每个工作日的操作时间是
周五 - 上午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
如果所有餐厅的餐厅每天都开放或关闭,我该如何找到?
答案 0 :(得分: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()