2012-08-31 8 views
9

私は会社の1週間の営業時間をモデル化しようとしています。ここに私の試みです:Django - 営業時間のオブジェクト

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) 

これは正しいようですか?

これを定義する動的な方法はありませんか?

(フォーム上の)各日を簡単に検証できますか? @lyapun提案から

+1

私はこの良いアイデアだと思う - http://stackoverflow.com/a/8128427/830941 [既存の – lyapun

+0

可能重複Djangoで "営業時間"を実装するためのソリューション](http://stackoverflow.com/questions/8128143/any-existing-solution-to-implement-opening-hours-in-django) –

答えて

15

、私にとって受け入れ可能な解決策は次のようになります。

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

私はあなたがunique_togetherをしたいと思う平日のみではなく、店舗と曜日を表示します。 – byoungb

+0

そうです、それは実際には 'unique_together =(平日、店)' –

+0

Django 1.8のDurationField()はto_hourの方が良いでしょう。 12時以降に店舗が閉店することがありますか? anydayのclosing timeは特定の日のfrom_hour + durationです。これは良いアプローチですか? [1]:https://docs.djangoproject.com/ja/1.8/ref/models/fields/#durationfield – Pranaysharma

関連する問題