¿Es este concepto de alguna manera posible en Pydantic?
## one file class StatusOut(BaseModel): id: int name: str ## another file class UserOut(BaseModel): name: str status_name: StatusOut.name ## IS THIS ACHIEVABLE???Recibo un error "AttributeError: tipo de objeto 'StatusOut' no tiene atributo 'nombre'"
Entonces, lo primero y único que tengo en mente es anular la validación con @validator(...) .
from pydantic import BaseModel, validator class StatusOut(BaseModel): id: int name: str class UserOut(BaseModel): name: str status_name: StatusOut @validator("status_name") def redefine_status_name(cls, v): return v.name status = StatusOut(id=1, name="status") user = UserOut(name="test", status_name=status) print(user.json()) # {"name": "test", "status_name": "status"} Supongo que no hay necesidad de explicar lo que hice, solo StatusOut().name en lugar de StatusOut en sí
Aunque no sugiero hacer eso, ya que hace que el tipo real de status_name no sea el que se declara y podría confundirlo en el futuro.