From 84139973c90aa43e00267d294fd9dcd7d3aa4d2d Mon Sep 17 00:00:00 2001 From: Chris Mayo Date: Mon, 23 Oct 2023 19:22:07 +0100 Subject: [PATCH] Fix Exception: Cannot find reverse relation for model SQLAlchemy 2.0.2 removed the invocation of registry.configure() from Mapper.iterate_properties causing this problem. sqlalchemy.orm.registry.configure() was added in 1.4.0b2. Observed as test failures in: flask_admin/tests/sqla/test_basic.py flask_admin/tests/sqla/test_form_rules.py flask_admin/tests/sqla/test_inlineform.py --- flask_admin/contrib/sqla/form.py | 1 + flask_admin/contrib/sqla/view.py | 1 + 2 files changed, 2 insertions(+) Index: Flask-Admin-1.6.1/flask_admin/contrib/sqla/form.py =================================================================== --- Flask-Admin-1.6.1.orig/flask_admin/contrib/sqla/form.py +++ Flask-Admin-1.6.1/flask_admin/contrib/sqla/form.py @@ -668,6 +668,7 @@ class InlineModelConverter(InlineModelCo target_mapper = info.model._sa_class_manager.mapper.base_mapper reverse_prop = None + model.registry.configure() for prop in target_mapper.iterate_properties: if hasattr(prop, 'direction') and prop.direction.name in ('MANYTOONE', 'MANYTOMANY'): Index: Flask-Admin-1.6.1/flask_admin/contrib/sqla/view.py =================================================================== --- Flask-Admin-1.6.1.orig/flask_admin/contrib/sqla/view.py +++ Flask-Admin-1.6.1/flask_admin/contrib/sqla/view.py @@ -366,6 +366,7 @@ class ModelView(BaseModelView): if model is None: model = self.model + model.registry.configure() return model._sa_class_manager.mapper.iterate_properties def _apply_path_joins(self, query, joins, path, inner_join=True):