바로 모델을 만들어 보겠습니다.
파이썬(/appserver/apps/calendar/models.py)
# 생략
from datetime import date, time, timezone, datetime
from sqlmodel import SQLModel, Field, Relationship, Text, JSON, func, String, Column
# calendar 모델 코드의 created_at, updated_at까지 생략
class TimeSlot(SQLModel, table=True):
__tablename__ = "time_slots"
id: int = Field(default=None, primary_key=True)
start_time: time
end_time: time
weekdays: list[int] = Field( # ①
sa_type=JSON().with_variant(JSONB(astext_type=Text()), "postgresql"),
description="예약 가능한 요일들"
)
calendar_id: int = Field(foreign_key="calendars.id")
calendar: Calendar = Relationship(back_populates="time_slots")
created_at: AwareDatetime = Field(
default=None,
nullable=False,
sa_type=UtcDateTime,
sa_column_kwargs={
"server_default": func.now(),
},
)
updated_at: AwareDatetime = Field(
default=None,
nullable=False,
sa_type=UtcDateTime,
sa_column_kwargs={
"server_default": func.now(),
"onupdate": lambda: datetime.now(timezone.utc),
},
)