from typing import Optional from pydantic import computed_field from sqlmodel import Field, Relationship from app.model.BasicModel import BasicModel from app.utils.create_module_service import create_model_service class PosModel(BasicModel, table=True): __tablename__ = "pl_pos" name: str = Field(default=None, description="职位名称") code: str = Field(default=None, description="职位编码") # parent_code: str = Field(default=None, description="父职位编码") organization_code: str = Field(default=None, description="所属组织编码") remarks: str = Field(default=None, description="备注信息") parent_code: str = Field( default=None, description="职位编码", foreign_key="pl_pos.code", # 添加外键约束 nullable=True ) parent: Optional["PosModel"] = Relationship( sa_relationship_kwargs={ "foreign_keys": "PosModel.parent_code", "remote_side": "PosModel.code", "uselist": False } ) @computed_field @property def parent_name(self) -> Optional[str]: return self.parent.name if self.parent else None @parent_name.setter def parent_name(self, value: Optional[str]) -> None: pass PosService = create_model_service(PosModel)