Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

390
Vistas
Tipo que no se puede modificar en la solicitud de FastAPI

Estoy escribiendo una post-api usando fastapi. El formato de solicitud requerido es:

 { "leadid":LD123, "parties":[ { "uid":123123, "cust_name":"JOhn Doe", }, ...]}

El código fastapi en python es:

 class Customer(BaseModel): UID: str CustName: str class PackageIn(BaseModel): lead_id: str parties: Set[Customer] # threshold: Optional[int] = 85 app = FastAPI() @app.post('/') async def nm_v2(package:PackageIn): return {"resp":"Response"}

Cuando visito SwaggerUI para enviar la respuesta, el error es "Error 422: Entidad no procesable" . Además, el documento SwaggerUI establece

 { "detail": [ { "loc": [ "body" ], "msg": "unhashable type: 'Customer'", "type": "type_error" } ] }

No sé cómo crear esta estructura dict () para la carga útil de la solicitud sin crear una clase basada en pydantic separada llamada Cliente. Por favor, dígame cómo rectificar el error.

over 4 years ago · Santiago Trujillo
1 Respuestas
Responde la pregunta

0

Pytdantic BaseClass no es hashable. Hay una discusión sobre esta función, supongo que no se implementará. Hay una solución en la discusión, para su caso puede probar esto:

 from pydantic import BaseModel from typing import Set class MyBaseModel(BaseModel): def __hash__(self): # make hashable BaseModel subclass return hash((type(self),) + tuple(self.__dict__.values())) class Customer(MyBaseModel): # Use hashable sublclass for your model UID: str CustName: str class PackageIn(BaseModel): lead_id: str parties: Set[Customer] # threshold: Optional[int] = 85 data = { "lead_id": 'LD123', "parties": [ { "UID": 123123, "CustName": "JOhn Doe", }]} PackageIn.parse_obj(data) # This part fastapi will make on post request, just for test > <PackageIn lead_id='LD123' parties={<Customer UID='123123' CustName='JOhn Doe'>}>
over 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda