我正在做一个FastAPI项目,我试图使用redis_om库中的HashModel类与Redis数据库交互。然而,我在为我的一个API端点定义响应模型时遇到了与Pydantic相关的问题。下面是我的代码:
from fastapi import FastAPI
from fastapi.middleware.cors import CORSMiddleware
from redis_om import get_redis_connection, HashModel
app = FastAPI()
app.add_middleware(
CORSMiddleware,
allow_origins=['http://localhost:3000'],
allow_methods=['*'],
allow_headers=['*'])
redis = get_redis_connection(
host='redis-hos.cloud.redislabs.com',
port='port',
password='password',
decode_responses=True)
class Product(HashModel):
name: str
price: float
quantity: int
class Meta:
database = redis
@app.get("/")
async def root():
return {"message": "Hello, World!"}
@app.get("/product")
def all():
# Fetch and return all products
products = Product.all()
return products
@app.post("/addproduct")
async def create(product: Product):
# Create a new Product instance and save it to Redis
return product.save()
字符串
当我尝试运行这段代码时,我得到以下错误:
fastapi.exceptions.FastAPIError: Invalid args for response field! Hint: check that <class 'main.Product'> is a valid Pydantic field type. If you are using a return type annotation that is not a valid Pydantic field (e.g. Union[Response, dict, None]) you can disable generating the response model from the type annotation with the path operation decorator parameter response_model=None. Read more: https://fastapi.tiangolo.com/tutorial/response-model/
型
我已经检查了我的Product类,它似乎被正确地定义了必要的Pydantic字段。有人能帮助我理解为什么我会得到这个错误,以及如何解决它吗?谢谢!
1条答案
按热度按时间gcuhipw91#
我也遇到了同样的问题。在系统中安装Pydantic v1而不是最新版本。最新版本的Pydantic不支持HashModel。
字符串
参考:https://github.com/redis/redis-om-python/issues/539