Aditya
Aditya

Reputation: 1

FastAPI Error: Invalid args for response field with Redis HashModel - Pydantic Issue

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

Answers (1)

Satchit Desai
Satchit Desai

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

Related Questions