【发布时间】:2021-11-14 14:03:18
【问题描述】:
我有一个 api 入口点:
@app.get('/dealers_get_users/', response_model = schemas.SellSideUserId, status_code=200)
def getdata(db: database.SessionLocal = _Depends(database.get_db)):
result = {}
i = db.query(models.sellSideUser).all()
for dealer_users in i:
result[str(dealer_users.user_id)] = {
'user_name' : dealer_users.user_name,
'user_pass' : dealer_users.user_pass,
}
m = schemas.SellSideUserId(user_id=result)
return m
从 db 进来的数据只有 3 个字段:user_id,user_name,user_pass
当我调用 api 时,我得到了这个:
{
"user_id": {
"1": {
"user_name": "testname",
"user_pass": "testpass"
}
}
}
好的,很酷 - 我得到了我的数据。但我仍在尝试了解这些模型是如何工作的,并没有真正掌握如何移入或移出嵌套字典。
例如,我希望它看起来像这样:
{
"1": {
"user_name": "testname",
"user_pass": "testpass"
}
}
但我不确定如何将“结果”变量传递给此类 - 无论如何,我都会遇到错误。
我的模型:
class SellSideUserId(_BaseModel):
user_id : dict
class Config:
orm_mode = True
我是否应该构建两个 pydantic 模型 - 一个基于另一个?可以在这方面使用一些帮助
谢谢!
【问题讨论】:
-
如果你想返回多个用户,为什么不使用列表而不是字典?
-
@HernánAlarcón 我想我可以做到,但我只想知道如何做到这一点 - 显然我对这些模型的工作方式存在误解
-
据我所知,基本 pydantic 模型中的键不应该是动态的。这就是它的设计方式。您在编写类时定义它们,甚至可以给它们一个别名,但仅此而已。该文档描述了dynamic model creation,但如果您只想返回一些用户,它可能太复杂了。
-
@HernánAlarcón 啊,明白了。我的意思是,我显然可以在不使用响应模型的情况下将其放入我想要的 json 格式。例如:result[user_id] = {'user_name':user_name, 'user_pass':user_pass} |但是,我认为使用知名图书馆会更好?