2012-08-31 10 views
9

Sto provando a modellare l'orario di lavoro per una settimana di un'azienda. Ecco il mio tentativo:Django - Oggetti per ore di lavoro

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) 

Questo sembra corretto?

Non esiste un modo più dinamico per definirlo?

Posso convalidare facilmente ogni giorno (su un modulo)?

+1

Penso che questo una buona idea - http://stackoverflow.com/a/8128427/830941 – lyapun

+0

possibile duplicato di [Qualsiasi esistente soluzione per implementare "orari di apertura" in Django] (http://stackoverflow.com/questions/8128143/any-existing-solution-to-implement-opening-hours-in-django) –

risposta

15

Da suggerimento @lyapun, una soluzione accettabile per me sarebbe:

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

Penso che tu voglia fare unique_together su negozio e giorno della settimana, anziché solo nei giorni feriali. – byoungb

+0

Esatto, in realtà è 'unique_together = (weekday, store)' –

+0

Un [1] DurationField() in Django 1.8 sarà un'alternativa migliore a to_hour. Considerando a volte il negozio potrebbe chiudersi dopo le 12:00? In questo modo, l'orario di chiusura in qualsiasi giorno è da_ora + durata in un giorno specifico? è un buon approccio? [1]: https: //docs.djopoproject.com/en/1.8/ref/models/fields/#durationfield – Pranaysharma

Problemi correlati