У меня есть модель, в которой я сохраняю повторяющиеся занятия в моем тренажерном зале.
DAYS_OF_WEEK = (
(0, _("Monday")),
(1, _("Tuesday")),
(2, _("Wednesday")),
(3, _("Thursday")),
(4, _("Friday")),
(5, _("Saturday")),
(6, _("Sunday")),
)
class RecurringSession(models.Model):
session = models.ForeignKey(SessionType, db_index=True, on_delete=models.CASCADE)
dayofweek = models.PositiveSmallIntegerField(choices=DAYS_OF_WEEK)
time = models.TimeField()
Однако некоторые занятия проводятся чаще, чем раз в неделю. Как лучше всего хранить несколько значений (от 1 до 7) в этом поле модели? Я использую Django Mysql 8.0, и, насколько я понимаю, он поддерживает поле JSON, но из документов django кажется, что пока поддерживается только Postgres. Есть ли способ сделать это c django? Может быть, сохранить charfield со значениями, разделенными запятыми? Мне не нужно искать по этому полю.
Каждую неделю будет выполняться задание cron, которое будет читать эту модель и создавать экземпляр каждого сеанса для другой модели. (Мне нужна каждая сессия как экземпляр для настройки: замена учителя, список сессий, статус сессии - я могу отменить отдельную сессию в праздничный день или по другой причине). Таким образом, в этом «RecurringSessions» я буду хранить информацию о сеансе, которая будет генерироваться каждую неделю. То, как я сначала написал, будет модельный экземпляр для каждого дня недели одного и того же сеанса, но я хочу сгруппировать их в один и тот же экземпляр, потому что я думаю, что он выглядит лучше и может облегчить установку учителя в навалом. В качестве альтернативы я мог бы сохранить json с dict для нескольких значений дня / времени для каждого сеанса, однако это немного усложнит проверку того, что если cronjob запускается дважды, класс не дублируется.
Теперь, чтобы этого избежать, у меня есть UniqueConstraint в моей модели расписания с полями «день», «время» и «комната»
Использование Django 3.0.6, Python 3.8. 2, и MySQL 8.0.20.
спасибо