0

我想允许用户在一周的 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

任何帮助都将不胜感激(是的,到目前为止,Doodle 远远超出了我的功能,但 1. 这是一个学习项目,2. 我计划将其转向不同的方向)

编辑:顺便说一句,来自 Python 和 Qt 等等,我最初的方法是嵌套循环和字典,但 South 和 Django 似乎不喜欢那样。我需要更多地考虑“类似数据库”,所以不要害怕提交几乎微不足道的东西。这可能是我需要的,真的。

4

1 回答 1

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")

我希望这会帮助你到达某个地方。

于 2012-11-22T21:37:28.877 回答