Reputation: 1
I'm working on a FastAPI project where I'm trying to use the HashModel class from the redis_om library to interact with a Redis database. However, I've encountered an issue related to Pydantic when defining a response model for one of my API endpoints. Here's my code:
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()
When I try to run this code, I get the following error:
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/
I've checked my Product class, and it seems to be defined correctly with the necessary Pydantic fields. Could someone please help me understand why I'm getting this error and how I can resolve it? Thank you!
Upvotes: 0
Views: 594
Reputation: 23
I was stuck on the same problem. Install Pydantic v1 instead of the latest version in your system. HashModel is not supported by the latest version of Pydantic.
pip install pydantic==1.10.13
Reference: https://github.com/redis/redis-om-python/issues/539
Upvotes: 1