From f5b7eca9c75f525ae322b5c787aa008cd6e7a004 Mon Sep 17 00:00:00 2001 From: benedikt-bartscher <31854409+benedikt-bartscher@users.noreply.github.com> Date: Fri, 8 Mar 2024 00:19:35 +0100 Subject: [PATCH] add support for sqlalchemy AssociationProxys (#2809) * add support for sqlalchemy AssociationProxys * python 3.8 compatibility --- reflex/utils/types.py | 8 ++++++++ 1 file changed, 8 insertions(+) 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)