diff --git a/app/model/PosModel.py b/app/model/PosModel.py index 973ee88..0446b40 100644 --- a/app/model/PosModel.py +++ b/app/model/PosModel.py @@ -1,4 +1,7 @@ -from sqlmodel import Field +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 @@ -9,9 +12,33 @@ class PosModel(BasicModel, table=True): name: str = Field(default=None, description="职位名称") code: str = Field(default=None, description="职位编码") - parent_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)