feat: PosModel 关联查询得到父职位信息
This commit is contained in:
@@ -63,11 +63,13 @@ def add_app_middlewares(app: FastAPI):
|
|||||||
try:
|
try:
|
||||||
response = await call_next(request)
|
response = await call_next(request)
|
||||||
except HTTPException as e:
|
except HTTPException as e:
|
||||||
|
print(e)
|
||||||
if e.status_code == status.HTTP_401_UNAUTHORIZED:
|
if e.status_code == status.HTTP_401_UNAUTHORIZED:
|
||||||
return JSONResponse(content={"message": e.detail}, status_code=status.HTTP_401_UNAUTHORIZED)
|
return JSONResponse(content={"message": e.detail}, status_code=status.HTTP_401_UNAUTHORIZED)
|
||||||
else:
|
else:
|
||||||
return JSONResponse(content={"message": e.detail}, status_code=status.HTTP_500_INTERNAL_SERVER_ERROR)
|
return JSONResponse(content={"message": e.detail}, status_code=status.HTTP_500_INTERNAL_SERVER_ERROR)
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
|
print(e)
|
||||||
return JSONResponse(content={"message": str(e)}, status_code=status.HTTP_500_INTERNAL_SERVER_ERROR)
|
return JSONResponse(content={"message": str(e)}, status_code=status.HTTP_500_INTERNAL_SERVER_ERROR)
|
||||||
|
|
||||||
return response
|
return response
|
||||||
|
|||||||
+38
-27
@@ -1,7 +1,8 @@
|
|||||||
from typing import Optional
|
from typing import Optional
|
||||||
|
|
||||||
from pydantic import computed_field
|
from pydantic import computed_field
|
||||||
from sqlmodel import Field, Relationship
|
from sqlalchemy.orm import selectinload
|
||||||
|
from sqlmodel import Field, Relationship, select
|
||||||
|
|
||||||
from app.model.BasicModel import BasicModel
|
from app.model.BasicModel import BasicModel
|
||||||
from app.model.OrgModel import OrgModel
|
from app.model.OrgModel import OrgModel
|
||||||
@@ -21,7 +22,7 @@ class PosModel(BasicModel, table=True):
|
|||||||
|
|
||||||
parent_code: str = Field(
|
parent_code: str = Field(
|
||||||
default=None,
|
default=None,
|
||||||
description="职位编码",
|
description="父职位编码",
|
||||||
foreign_key="pl_pos.code", # 添加外键约束
|
foreign_key="pl_pos.code", # 添加外键约束
|
||||||
nullable=True
|
nullable=True
|
||||||
)
|
)
|
||||||
@@ -37,36 +38,46 @@ class PosModel(BasicModel, table=True):
|
|||||||
@computed_field
|
@computed_field
|
||||||
@property
|
@property
|
||||||
def parent_name(self) -> Optional[str]:
|
def parent_name(self) -> Optional[str]:
|
||||||
|
try:
|
||||||
return self.parent.name if self.parent else None
|
return self.parent.name if self.parent else None
|
||||||
|
except:
|
||||||
|
return None
|
||||||
|
|
||||||
@parent_name.setter
|
@parent_name.setter
|
||||||
def parent_name(self, value: Optional[str]) -> None:
|
def parent_name(self, value: Optional[str]) -> None:
|
||||||
pass
|
pass
|
||||||
|
|
||||||
# /*---------------------------------------organization_code-------------------------------------------*/
|
# # /*---------------------------------------organization_code-------------------------------------------*/
|
||||||
|
#
|
||||||
|
# organization_code: str = Field(
|
||||||
|
# default=None,
|
||||||
|
# description="所属组织编码",
|
||||||
|
# foreign_key="pl_org.code", # 添加外键约束
|
||||||
|
# nullable=True
|
||||||
|
# )
|
||||||
|
#
|
||||||
|
# organization: Optional["OrgModel"] = Relationship(
|
||||||
|
# sa_relationship_kwargs={
|
||||||
|
# "foreign_keys": "PosModel.organization_code",
|
||||||
|
# "remote_side": "OrgModel.code",
|
||||||
|
# "uselist": False
|
||||||
|
# }
|
||||||
|
# )
|
||||||
|
#
|
||||||
|
# @computed_field
|
||||||
|
# @property
|
||||||
|
# def organization_name(self) -> Optional[str]:
|
||||||
|
# try:
|
||||||
|
# return self.organization.name if self.organization else None
|
||||||
|
# except:
|
||||||
|
# return None
|
||||||
|
#
|
||||||
|
# @organization_name.setter
|
||||||
|
# def organization_name(self, value: Optional[str]) -> None:
|
||||||
|
# pass
|
||||||
|
|
||||||
organization_code: str = Field(
|
|
||||||
default=None,
|
|
||||||
description="所属组织编码",
|
|
||||||
foreign_key="pl_org.code", # 添加外键约束
|
|
||||||
nullable=True
|
|
||||||
)
|
|
||||||
|
|
||||||
organization: Optional["OrgModel"] = Relationship(
|
PosService = create_model_service(
|
||||||
sa_relationship_kwargs={
|
Cls=PosModel,
|
||||||
"foreign_keys": "PosModel.organization_code",
|
custom_query=lambda: select(PosModel).options(selectinload(PosModel.parent)),
|
||||||
"remote_side": "OrgModel.code",
|
)
|
||||||
"uselist": False
|
|
||||||
}
|
|
||||||
)
|
|
||||||
|
|
||||||
@computed_field
|
|
||||||
@property
|
|
||||||
def organization_name(self) -> Optional[str]:
|
|
||||||
return self.organization.name if self.organization else None
|
|
||||||
|
|
||||||
@organization_name.setter
|
|
||||||
def organization_name(self, value: Optional[str]) -> None:
|
|
||||||
pass
|
|
||||||
|
|
||||||
PosService = create_model_service(PosModel)
|
|
||||||
|
|||||||
Reference in New Issue
Block a user