假设我有这个模型:
class Thing(Base):
id = Column(Integer, primary_key=True)
owner_user_id = Column(Integer)
def is_owned_by_user(self, user_id: int):
return self.owner_user_id == user_id
这个模式是:
class ThingDB(BaseModel):
id: int
user_id: int
class Config:
orm_mode = True
class Thing(BaseModel):
id: int
user_id: int
owned_by_me: bool
我想创建一个端点,返回上面的Thing
模式,问题是它的字段owned_by_me
不是绝对的,它取决于执行请求的用户
我找到的唯一方法是:
@router.get("/{thing_id}", response_model=schemas.Thing)
def read_game(
thing_id: int,
db: Session = Depends(get_db),
current_user: models.User = Depends(get_current_user),
):
thing = crud.thing.read(db, thing_id)
return schemas.Thing(
**schemas.ThingDB.from_orm(thing).dict(),
owned_by_me=thing.is_owned_by_user(current_user.id)
)
但我一点也不喜欢,我该怎么办
注意,所有与端点相关的事物都需要返回模式Thing
,而不是ThingDB
p.p.S.我省略了一些代码,只留下必要的内容,但我主要遵循FastAPI文档,应该很清楚我要做什么
目前没有回答
相关问题 更多 >
编程相关推荐