Поле расписания доступности в Django Models?

Я совсем новичок в Django и пытаюсь создать веб-приложение, в котором некоторые пользователи смогут вводить свой доступный недельный график, а также показывать, в какое время суток они доступны. На рисунке ниже (это только внешняя часть) показано нечто похожее на то, что я пытаюсь создать. Какой тип поля модели я могу использовать для хранения такого типа информации внутри класса Model?

enter image description here

Я бы использовал поле ManyToMany, которое ссылается на Shift таблицу.

class Shift(models.Model):
    # Day of week
    day = models.CharField()
    # Morning, afternoon, evening
    time = models.CharField()

class UserProfile(models.Model):
    ...
    availability = models.ManyToManyField(Shift)

В документации Django есть удобное руководство по использованию ManyToManyFields. https://docs.djangoproject.com/en/4.1/topics/db/examples/many_to_many/

Теперь, когда я смотрю на это, я могу попробовать создать много полей MultiSelect для каждого из дней (воскресенье, понедельник, вторник,...суббота), и в каждом из них будет 3 варианта (утро, день, вечер). Таким образом, вам не придется заполнять базу данных (перед использованием базы данных) различными вариантами (Утро воскресенья, Вечер понедельника и т.д.) Однако в долгосрочной перспективе я могу столкнуться с проблемой избыточности таблицы.

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