diff --git a/reflex/utils/types.py b/reflex/utils/types.py index c290f7a64..4c3958bb0 100644 --- a/reflex/utils/types.py +++ b/reflex/utils/types.py @@ -23,6 +23,7 @@ from typing import ( import sqlalchemy from pydantic.fields import ModelField +from sqlalchemy.ext.associationproxy import AssociationProxyInstance from sqlalchemy.ext.hybrid import hybrid_property from sqlalchemy.orm import DeclarativeBase, Mapped, QueryableAttribute, Relationship @@ -194,6 +195,13 @@ def get_attribute_access_type(cls: GenericType, name: str) -> GenericType | None return List[class_] else: return class_ + if isinstance(attr, AssociationProxyInstance): + return List[ + get_attribute_access_type( + attr.target_class, + attr.remote_attr.key, # type: ignore[attr-defined] + ) + ] elif isinstance(cls, type) and issubclass(cls, Model): # Check in the annotations directly (for sqlmodel.Relationship) hints = get_type_hints(cls)