2012-11-22 54 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'行。谢谢 –