2012-11-22 56 views
0

我希望允許用戶在一週中的任何一天中的任何時間提供其任何時間的可用性。Django模型中的類塗鴉功能?

蠻力的方式來做到這一點是簡單地提供21個複選框,這樣

MONDAY_AM = models.BooleanField() 
MONDAY_NOON = models.BooleanField() 
... 
SUNDAY_PM = models.BooleanField() 

然而,這似乎很傻。如果我想回憶所有的星期一,或所有的夜晚,該怎麼辦?它似乎不會很好地擴展。

我想一個更復雜的方法,理想的情況是,讓我對這些機型註冊Django的管理,這樣我可以以表格的形式查看每個用戶的可用性,如

 |Mo Tu We Th Fr Sa Su 
AM | x x 
NOON |  x x  x x 
PM |  x  x x 

任何幫助將非常感激(是的,迄今爲止塗鴉遠遠超過了我的東西的功能,但1.它是一個學習項目,2.我打算採取不同的方向)

編輯:BTW,來自Python和Qt和什麼都沒有,我最初的方法是嵌套循環和字典,但南和Django似乎不喜歡那樣。我需要更多地考慮「像數據庫一樣」,所以不要害怕提交幾乎微不足道的東西。這可能是我需要的,真的。

回答

1

在過去,我也需要這個功能。在這Teacher在任何一天來定義其可用性時間,所以我想出了這個模式:

class Availability(models.Model): 
    WEEKDAY_CHOICES = (
     (0, 'Monday'), 
     (1, 'Tuesday'), 
     (2, 'Wednesday'), 
     (3, 'Thursday'), 
     (4, 'Friday'), 
     (5, 'Saturday'), 
     (6, 'Sunday'), 
    ) 
    id = models.AutoField(primary_key=True) 
    teacher = models.ForeignKey(Teacher) 
    weekday = models.PositiveSmallIntegerField(choices=WEEKDAY_CHOICES) 
    start_time = models.TimeField(null=True, blank=True) 
    end_time = models.TimeField(null=True, blank=True) 

    class Meta: 
     db_table = 'availability' 
     unique_together = ("teacher", "weekday") 

我希望這將有助於你得到的地方。

+0

爲什麼你有一個「AutoField」行? 其餘的是優秀和直接。謝謝! – RodericDay

+0

是的,你可以排除'auto field'行。謝謝 –