Files
meijiaka-zy/python-api/app/models/base.py
T

50 lines
1.1 KiB
Python

"""
基础模型定义
============
"""
import uuid
from datetime import UTC, datetime
from sqlalchemy import DateTime
from sqlalchemy.dialects.postgresql import UUID
from sqlalchemy.orm import Mapped, mapped_column
from app.db.session import Base
class BaseModel(Base):
"""
基础模型 - 所有模型继承此类
提供:
- UUID 主键(自动生成)
- 创建时间
- 更新时间
"""
__abstract__ = True
id: Mapped[str] = mapped_column(
UUID(as_uuid=False),
primary_key=True,
default=lambda: str(uuid.uuid4()),
)
created_at: Mapped[datetime] = mapped_column(
DateTime(timezone=True),
default=lambda: datetime.now(UTC),
nullable=False,
)
updated_at: Mapped[datetime] = mapped_column(
DateTime(timezone=True),
default=lambda: datetime.now(UTC),
onupdate=lambda: datetime.now(UTC),
nullable=False,
)
def to_dict(self) -> dict:
"""转换为字典(用于序列化)"""
return {column.name: getattr(self, column.name) for column in self.__table__.columns}