I have these two Python classes(Pydantic schemas which represent SQLAlchemy models):
class Role(RoleBase):
id: int
users: list[User] = []
class Config:
orm_mode = True
class User(UserBase):
id: int
date_created: datetime.datetime
profile_image: Optional[str] = None
class Config:
orm_mode = True
I’ve tried to do it with ForwardRef:
User = ForwardRef('User')
...
users: list[User] = []
or to wrap it with quotes:
users: List['User'] = []
but I get TypeError: issubclass() arg 1 must be a class.
Is there some way to implement this without changing classes’ declaration order?
>Solution :
When using pydantic.ForwardRef, you need to call update_forward_refs on classes that have forward references to update them. So add
Role.update_forward_refs()
after User is defined.
This will all be unnecessary if PEP 649 is accepted.