python - pydantic.error_wrappers.ValidationError : value is not a valid list (type=type_error. 列表)

标签 python api fastapi pydantic

FastAPI 新手


获取“值不是有效列表 (type=type_error.list)”错误

每当我尝试返回 {"posts": post}

@router.get('', response_model = List[schemas.PostResponseSchema])
def get_posts(db : Session = Depends(get_db)):
 print(limit)
 posts = db.query(models.Post).all()
 return {"posts" : posts}

虽然如果我返回这样的帖子它会起作用:

return posts

这是我的响应模型:

class PostResponseSchema(PostBase):
 user_id: int
 id: str
 created_at : datetime
 user : UserResponseSchema

 class Config:
     orm_mode = True

和模型:

class Post(Base):
 __tablename__ = "posts"
 id =  Column(Integer, primary_key=True, nullable=False)
 title = Column(String, nullable=False)
 content = Column(String, nullable = False)
 published = Column(Boolean, server_default = 'TRUE' , nullable = False)
 created_at = Column(TIMESTAMP(timezone=True), nullable = False, server_default = 
  text('now()'))
 user_id = Column(Integer, ForeignKey("users.id", ondelete = "CASCADE"), nullable = 
  False )

 user = relationship("User")

我在这里错过了什么?

最佳答案

您的响应应该是您这行代码的列表:

@router.get('', response_model = List[schemas.PostResponseSchema])

但是您的响应返回{"posts": posts} 是对象。

因此您必须返回 posts,因为它是您的响应所期望的对象列表。否则,如果您想使用 return {"posts": posts} 只需将 router.get('', response_model = List[schemas.PostResponseSchema]) 更改为 router.get('') 然后你会得到这样的东西:

{"posts": [......]}

[] 内将是一个帖子列表。

关于python - pydantic.error_wrappers.ValidationError : value is not a valid list (type=type_error. 列表),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/73983298/

相关文章:

python-3.x - 调试由服务器重新启动修复的 Twilio SSL 错误(错误 11220)

python - FastAPI 上是否可以有一个带有默认值的必需查询参数?

ssl - 我们如何在不重定向的情况下在两个端口(一个 HTTP 和一个 HTTPS)上运行 fastAPI 应用程序?

python - 将 python dict 转换为列表列表

Python Numpy 使用先验值计算——无循环

javascript - 我的 API URL 正确且 HTTP(S) 正确,但 Console.log() 出现空白?为什么?

javascript - Runscope 在每个请求之前初始化时间戳变量

python - 通过 python 中的键过滤列表中字典项的值

python - 当某些行返回该相关对象的空值时,如何使用 select_lated() ?

php - Facebook 订阅 API - 页面评论的推送通知?