2012-08-31 19 views
9

Próbuję modelować godziny pracy na tydzień w firmie. Oto moja próba:Django - Obiekty dla godzin pracy

class Company(models.Model): 
    name = models.CharField(max_length=100) 
    logo = models.FileField(upload_to='company_logos') 
    mon_start = models.TimeField() 
    mon_end = models.TimeField() 
    tue_start = models.TimeField() 
    tue_end = models.TimeField() 
    wed_start = models.TimeField() 
    wed_end = models.TimeField() 
    thu_start = models.TimeField() 
    thu_end = models.TimeField() 
    fri_start = models.TimeField() 
    fri_end = models.TimeField() 
    sat_start = models.TimeField() 
    sat_end = models.TimeField() 
    sun_start = models.TimeField(blank=True) 
    sun_end = models.TimeField(blank=True) 

Czy wydaje się to poprawne?

Czy nie ma bardziej dynamicznego sposobu na zdefiniowanie tego?

Czy mogę łatwo zweryfikować każdy dzień (w formularzu)?

+1

myślę, że to dobry pomysł - http://stackoverflow.com/a/8128427/830941 – lyapun

+0

możliwe duplikat [Wszystkie istniejące rozwiązanie umożliwiające wdrożenie "godzin otwarcia" w Django] (http://stackoverflow.com/questions/8128143/any-existing-solution-to-implement-ing-hours-in-django) –

Odpowiedz

15

Od @lyapun sugestią, akceptowalne rozwiązanie dla mnie byłoby:

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


class Company(models.Model): 
    name = models.CharField(
     max_length=100 
    ) 
    logo = models.FileField(
     upload_to='company_logos' 
    ) 



class OpeningHours(models.Model): 
    store = models.ForeignKey(
     Company 
    ) 
    weekday = models.IntegerField(
     choices=WEEKDAYS, 
     unique=True 
    ) 
    from_hour = models.TimeField() 
    to_hour = models.TimeField() 
+1

Myślę, że chcesz zrobić unique_together na sklep i dzień powszedni, zamiast tylko w dniu powszednim. – byoungb

+0

Zgadza się, w rzeczywistości jest to 'unique_together = (weekday, store)' –

+0

Czy [1] DurationField() w Django 1.8 będzie lepszą alternatywą do to_hour. Biorąc pod uwagę, że czasami sklep może się zamknąć po godzinie 00:00? W ten sposób czas zamknięcia w niedziele to od godziny do godziny w określonym dniu? Czy to dobre podejście? [1]: https: //docs.djangoproject.com/en/1.8/ref/models/fields/#durationfield – Pranaysharma

Powiązane problemy