Управление свободными и занятыми встречами в django

Я ищу эффективный способ создания встреч между преподавателями и студентами.

Я хочу, чтобы учителя могли информировать своих учеников о своих возможностях: Например, Учитель пишет в заявке, что он свободен в понедельник с 8 до 9 утра. Студент хочет записаться на прием к преподавателю. Студент проверяет свободное время преподавателя и выбирает встречу в понедельник с 8 до 8.30 утра. Второй студент хочет записаться на прием, и приложение должно показать ему только свободное время преподавателя с 8.30 до 10 утра в понедельник, а не с 8.00 до 8.30, потому что сейчас это время занято первым студентом.

Есть класс "Учитель" и класс "Ученик".

Я думаю о создании класса dailySchedule для учителя с булевыми полями часовых слотов, в которых 0 означает свободен, а 1 означает занят. Когда студент выбирает встречу с 8 утра до 8.30 утра, поле slot_8_8h_30 равно 1. Затем в классе AppointmentBook добавляется запись на прием. Если строка, соответствующая встрече, удаляется, поле slot_8_8h_30 возвращается к 0.

Вот что я сделал в Django :

TIMESLOT_LIST = (
        (0, '08:00 – 08:30'),
        (1, '08:30 – 09:00'),
    )

class Student(models.Model):
    user = models.OneToOneField(settings.AUTH_USER_MODEL, null=True, on_delete=models.CASCADE)
    

class Staff(models.Model):
    user = models.OneToOneField(settings.AUTH_USER_MODEL, null=True, on_delete=models.CASCADE)
  

class AppointmentBook(models.Model):
    student = models.ForeignKey('Student', null=True, on_delete=models.CASCADE)
    staff = models.ForeignKey('Staff', null=True, on_delete=models.CASCADE)
    date = models.DateField(null = True)
    timeslot = models.IntegerField(null = True, choices=TIMESLOT_LIST)

class DailySchedule(models.Model):
    staff = models.ForeignKey('Staff', null = True, on_delete = models.CASCADE)
    date = models.DateField(null = True)
    slot_8_8h_30 = models.BooleanField(default = False)
    slot_8h30_9h = models.BooleanField(default = False)

Но с этой техникой, я должен сделать много условий для записи строки в AppointmentBook :

if slot_8_h30:
    timeslot = 0
elif slot_8h30_9h:
    timeslot = 0
elif
etc.

Как сделать более простой и менее сложной зависимость между dailySchedule и AppointmentBook?

Вернуться на верх