Поле расписания доступности в Django Models?
Я совсем новичок в Django и пытаюсь создать веб-приложение, в котором некоторые пользователи смогут вводить свой доступный недельный график, а также показывать, в какое время суток они доступны. На рисунке ниже (это только внешняя часть) показано нечто похожее на то, что я пытаюсь создать. Какой тип поля модели я могу использовать для хранения такого типа информации внутри класса Model?
Я бы использовал поле 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 варианта (утро, день, вечер). Таким образом, вам не придется заполнять базу данных (перед использованием базы данных) различными вариантами (Утро воскресенья, Вечер понедельника и т.д.) Однако в долгосрочной перспективе я могу столкнуться с проблемой избыточности таблицы.