2016-08-21 10 views
0

外資系のレストランと営業時間のモデルがあります。例えば その営業時間毎週日金曜日レストランの営業時間は、平日、営業時間、営業時間に基づいて表示されます。

あるレストランオーシャンビューカフェ - 午後6時30分

木曜日 - - 午後9:45

水曜日 - - 午前10時午前10時 - 午前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

テストされていませんが、動作するはずです。

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() 
+0

毎日の開閉時間はどのようにチェックされますか? – pythonBeginner

関連する問題