Django

2011-11-14 24 views
6

"açılış saatleri" uygulamak için mevcut herhangi bir çözüm, farklı mağazaların her biri için açılış saatleri açmak ve değiştirmek isteyen bir müşteri için web sitesi yapıyorum. Django ile bu tür bir problem için var olan bir çözüm var mı?Django

+0

Şu an mağazaları nasıl kullanıyorsunuz? Https://docs.djangoproject.com/en/dev/ref/models/instances/#django.db.models.Model.get_FOO_display: get_weekday_from ve get_weekday_to yöntemleri yazmak yerine –

cevap

11

Ne demek istiyorsun? Oldukça basit görünüyor. Hafta içi siparişinize göre ayarlayın. Ve isterseniz, doğrulama ekleyin. Fakat insanlar bu tür şeyler için doğrulamaya ihtiyaç duymayacak kadar akıllı olmalılar.

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_display ve get_weekday_to_display öğelerini kullanabilirsiniz. Bu çözümde – patrick

+1

haftanın farklı günlerinde farklı saatlere sahip olmak mümkün değildir, belki de bu sorunun anahtarı budur – juliomalegria

+1

@ julio.alegria: Neden bu mümkün değil? Bu yapıldı, düzenli aralıklarla, bir veya birkaç gün olması mümkün olurdu. Ve sonra bunun üstüne SpecialDays ekleyebilirsiniz. Buradaki zorlukları gerçekten görmüyorum. Niçin bu arnoud briche, bu soruyu bazı asıl maddelerle takip etmeden sormaktadır. – benjaoming

1

bunun için yeniden kullanılabilir uygulaması yoktur: django-openinghours. Uygulamanın kod tabanı ilk bakışta biraz tozlu görünüyor (PEP8 yok, camelCase, ..), ama django-openhours kullanışlı özellikleri bir dizi ile birlikte geliyor, yıllardır güvenilir ve test edilmiştir.