feat: UserServiceModel查询职位信息
This commit is contained in:
+34
-2
@@ -1,8 +1,12 @@
|
|||||||
from enum import Enum
|
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.BasicModel import BasicModel
|
||||||
|
from app.model.PosModel import PosModel
|
||||||
from app.utils.create_module_service import create_model_service
|
from app.utils.create_module_service import create_model_service
|
||||||
|
|
||||||
|
|
||||||
@@ -35,5 +39,33 @@ class UserServiceModel(PublicUser, table=True):
|
|||||||
__tablename__ = "pl_user"
|
__tablename__ = "pl_user"
|
||||||
__table_args__ = {'extend_existing': True}
|
__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)))
|
||||||
|
)
|
||||||
|
|||||||
Reference in New Issue
Block a user