我想允许用户在一周的7天中的任何一天中为三个时段中的任何一个提供他的可用性。
这样做的蛮力方法是简单地提供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等等,我的初始方法是嵌套for循环和字典,但South和Django似乎不喜欢这样。我需要更多地考虑“类似数据库”,所以不要害怕提交几乎无关紧要的东西。这可能就是我需要的,真的。
答案 0 :(得分: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")
我希望这会帮助你到达某个地方。