2011-11-14 28 views

回答

11

你是什麼意思?看起來很簡單。根據您的週日訂單進行調整。如果你喜歡,請添加驗證。但人們應該足夠聰明,不需要驗證那些東西。

WEEKDAYS = [ 
    (1, _("Monday")), 
    (2, _("Tuesday")), 
    (3, _("Wednesday")), 
    (4, _("Thursday")), 
    (5, _("Friday")), 
    (6, _("Saturday")), 
    (7, _("Sunday")), 
] 

class OpeningHours(models.Model): 
    store = models.ForeignKey("StoreModel") 
    weekday_from = models.IntegerField(choices=WEEKDAYS, unique=True) 
    weekday_to = models.IntegerField(choices=WEEKDAYS) 
    from_hour = models.IntegerField(choices=range(1,25)) 
    to_hour = models.IntegerField(choices=range(1,25)) 

    def get_weekday_from_display(self): 
     return WEEKDAYS[self.weekday_from] 

    def get_weekday_to_display(self): 
     return WEEKDAYS[self.weekday_to] 

class SpecialDays(models.Model): 
    holiday_date = models.DateField() 
    closed = models.BooleanField(default=True) 
    from_hour = models.IntegerField(choices=range(1,25), null=True, blank=True) 
    to_hour = models.IntegerField(choices=range(1,25), null=True, blank=True) 
+4

而不是編寫get_weekday_from和get_weekday_to方法,您可以使用get_weekday_from_display和get_weekday_to_display,如下所述:https://docs.djangoproject.com/en/dev/ref/models/instances/#django.db.models.Model.get_FOO_display – patrick

+1

在這個解決方案中,不可能在一週中的不同日子有不同的時間,也許這是問題的關鍵 – juliomalegria

+1

@ julio.alegria:爲什麼不可能?它是這樣做的,所以可以有一定的時間間隔,一天或幾天。然後你可以在其中添加SpecialDays。我並沒有真正看到這裏的挑戰。也不是爲什麼這個無聊的人會問這個問題,而沒有跟進一些實際的內容。 – benjaoming

1

有一個可重複使用的應用程序:django-openinghours。該應用程序的代碼基礎乍一看似乎有點灰塵(沒有PEP8,camelCase,..),但django-openinghours帶有一組有用的功能,在現場可靠並經過多年測試。

相關問題