From a3a23f452ff787c9225a4ccd23d31ef9de7e160e Mon Sep 17 00:00:00 2001 From: the-tosh Date: Mon, 9 Sep 2024 18:07:00 +0300 Subject: [PATCH 1/2] ajax.py: get object by PK on form rendering --- sqladmin/ajax.py | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/sqladmin/ajax.py b/sqladmin/ajax.py index 3fc60738..0c512047 100644 --- a/sqladmin/ajax.py +++ b/sqladmin/ajax.py @@ -1,6 +1,6 @@ from __future__ import annotations -from typing import TYPE_CHECKING, Any +from typing import TYPE_CHECKING, Any, Optional from sqlalchemy import String, cast, inspect, or_, select @@ -59,8 +59,21 @@ def format(self, model: type) -> dict[str, Any]: if not model: return {} + if isinstance(model, str): + model = self.get_object(model) + return {"id": str(get_object_identifier(model)), "text": str(model)} + def get_object(self, pk: str) -> Optional[type]: + pk_attr = get_object_identifier(self.model) + stmt = select(self.model).filter(pk_attr == pk) + + result = self.model_admin._run_query_sync(stmt) + if not result: + return None + + return result + async def get_list(self, term: str) -> list[Any]: stmt = select(self.model) From 7fb5ab94d7fb7ad4c8da022f354e82a3049d5efd Mon Sep 17 00:00:00 2001 From: the-tosh Date: Tue, 10 Sep 2024 01:37:48 +0300 Subject: [PATCH 2/2] Update ajax.py --- sqladmin/ajax.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sqladmin/ajax.py b/sqladmin/ajax.py index 0c512047..1728301d 100644 --- a/sqladmin/ajax.py +++ b/sqladmin/ajax.py @@ -72,7 +72,7 @@ def get_object(self, pk: str) -> Optional[type]: if not result: return None - return result + return result[0] async def get_list(self, term: str) -> list[Any]: stmt = select(self.model)