feat: UserServiceModel查询职位信息

This commit is contained in:
martsforever
2025-08-23 10:42:59 +08:00
parent 47c05e66c6
commit 98af276d69
+34 -2
View File
@@ -1,8 +1,12 @@
from enum import Enum
from typing import Optional
from sqlmodel import Field
from pydantic import computed_field
from sqlalchemy.orm import selectinload
from sqlmodel import Field, Relationship, select
from app.model.BasicModel import BasicModel
from app.model.PosModel import PosModel
from app.utils.create_module_service import create_model_service
@@ -35,5 +39,33 @@ class UserServiceModel(PublicUser, table=True):
__tablename__ = "pl_user"
__table_args__ = {'extend_existing': True}
pos_code: str = Field(
default=None,
description="用户职位编码",
foreign_key="pl_pos.code", # 添加外键约束
nullable=True
)
UserService = create_model_service(UserServiceModel)
position: Optional["PosModel"] = Relationship(
sa_relationship_kwargs={
"foreign_keys": "UserServiceModel.pos_code",
"remote_side": "PosModel.code",
"uselist": False
}
)
@computed_field
@property
def pos_name(self) -> Optional[str]:
return self.position.name if self.position else None
@pos_name.setter
def pos_name(self, value: Optional[str]) -> None:
pass
UserService = create_model_service(
Cls=UserServiceModel,
custom_query=(lambda: select(UserServiceModel)
.options(selectinload(UserServiceModel.position)))
)