0

ユーザーが、週 7 日間のいずれかで 3 つのタイムスロットのいずれかの可用性を提供できるようにしたいと考えています。

これを行う強引な方法は、単純に 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 に答える