Рассмотрите возможность создания отдельной модели для ScheduleDay
, которая может быть связана с вашим Schedule
с отношением Один-ко-многим.
class Schedule(db.Model):
__tablename__ = 'schedule'
id = db.Column(db.Integer, primary_key=True)
days = db.relationship('ScheduleDay', backref='schedule', lazy=True)
# ...
# ...
class ScheduleDay(db.Model):
id = db.Column(db.Integer, primary_key=True)
day = db.Column(db.Enum(DayNameList, name='schedule_day'))
start_at = db.Column(db.Time())
end_at = db.Column(db.Time())
schedule_id = db.Column(db.Integer, db.ForeignKey('schedule.id'),
nullable=False)
В случае, если у какой-либо недели будет больше 2 дней, вы можетелегко добавить больше из них.
Пример:
>>> schedule = Schedule()
>>> db.session.add(schedule)
>>> db.session.commit()
>>> from datetime import time
>>> monday_schedule = ScheduleDay(day=DayNameList.Monday, start_at=time(10, 15), end_at=time(12, 15), schedule_id=schedule.id)
>>> db.session.add(monday_schedule)
>>> tuesday_schedule = ScheduleDay(day=DayNameList.Tuesday, start_at=time(15, 15), end_at=time(17, 15), schedule_id=schedule.id)
>>> db.session.add(tuesday_schedule)
>>> db.session.commit()
>>> schedule.days
[<ScheduleDay 1>, <ScheduleDay 2>]
>>> schedule.days[0].day
<DayNameList.Monday: 'Monday'>
>>> schedule.days[1].day
<DayNameList.Tuesday: 'Tuesday'>