Comments (16)
@aminalaee It is not much, but at least that I can do to support great job which you've done so far. I wish to become long term supporter of this project, but I first need to make some agreements.
from sqladmin.
I fixed my code, and all working well, so issue was in my code not in the prepared new functionality.
from sqladmin.
yeah sure, you can use string values like the one mentioned here: https://github.com/aminalaee/sqladmin/blob/main/docs/configurations.md#details-page
So for example, if a User has a relationship Address and Address has a zip_code:
class UserAdmin(ModelAdmin, model=User):
column_details_list = ["address.zip_code"]
from sqladmin.
location
is not a column on the Storage model. You have location_uuid
as a column which you can use.
But if you want to use another Location field for example name
, that's not supported yet.
from sqladmin.
Thank you @NightSkySK for the pledge, it's very nice. I will get to this issue next week.
from sqladmin.
That's very nice π
from sqladmin.
Looks like I'm having the same issue when trying to sort by column_property. Is it related or not?
votes_count = column_property(
select(func.count())
.where(Vote.participant_id == id)
.correlate_except(Vote)
.scalar_subquery(),
)
CompileError: Can't resolve label reference for ORDER BY / GROUP BY / DISTINCT etc. Textual SQL expression 'votes_count' should be explicitly declared as text('votes_count')
from sqladmin.
This should now be possible on master, would really help if it's also tested before release.
from sqladmin.
Using related model fields in list and detailes page works for me.
Search by related model field causing error:
ProgrammingError: (psycopg2.errors.DuplicateAlias) table name "storage" specified more than once
INFO: 127.0.0.1:52836 - "GET /password/list?search=sn HTTP/1.1" 500 Internal Server Error
ERROR: Exception in ASGI application
Traceback (most recent call last):
File "D:\mSpaceLock\mSpaceLock-www\env-sqladmin\Lib\site-packages\sqlalchemy\engine\base.py", line 1969, in _exec_single_context
self.dialect.do_execute(
File "D:\mSpaceLock\mSpaceLock-www\env-sqladmin\Lib\site-packages\sqlalchemy\engine\default.py", line 922, in do_execute
cursor.execute(statement, parameters)
psycopg2.errors.DuplicateAlias: table name "storage" specified more than once
The above exception was the direct cause of the following exception:
Traceback (most recent call last):
File "D:\mSpaceLock\mSpaceLock-www\env-sqladmin\Lib\site-packages\uvicorn\protocols\http\h11_impl.py", line 408, in run_asgi
result = await app( # type: ignore[func-returns-value]
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "D:\mSpaceLock\mSpaceLock-www\env-sqladmin\Lib\site-packages\uvicorn\middleware\proxy_headers.py", line 84, in __call__
return await self.app(scope, receive, send)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "D:\mSpaceLock\mSpaceLock-www\env-sqladmin\Lib\site-packages\fastapi\applications.py", line 1115, in __call__
await super().__call__(scope, receive, send)
File "D:\mSpaceLock\mSpaceLock-www\env-sqladmin\Lib\site-packages\starlette\applications.py", line 122, in __call__
await self.middleware_stack(scope, receive, send)
File "D:\mSpaceLock\mSpaceLock-www\env-sqladmin\Lib\site-packages\starlette\middleware\errors.py", line 184, in __call__
raise exc
File "D:\mSpaceLock\mSpaceLock-www\env-sqladmin\Lib\site-packages\starlette\middleware\errors.py", line 162, in __call__
await self.app(scope, receive, _send)
File "D:\mSpaceLock\mSpaceLock-www\env-sqladmin\Lib\site-packages\starlette\middleware\exceptions.py", line 79, in __call__
raise exc
File "D:\mSpaceLock\mSpaceLock-www\env-sqladmin\Lib\site-packages\starlette\middleware\exceptions.py", line 68, in __call__
await self.app(scope, receive, sender)
File "D:\mSpaceLock\mSpaceLock-www\env-sqladmin\Lib\site-packages\fastapi\middleware\asyncexitstack.py", line 20, in __call__
raise e
File "D:\mSpaceLock\mSpaceLock-www\env-sqladmin\Lib\site-packages\fastapi\middleware\asyncexitstack.py", line 17, in __call__
await self.app(scope, receive, send)
File "D:\mSpaceLock\mSpaceLock-www\env-sqladmin\Lib\site-packages\starlette\routing.py", line 718, in __call__
await route.handle(scope, receive, send)
File "D:\mSpaceLock\mSpaceLock-www\env-sqladmin\Lib\site-packages\starlette\routing.py", line 443, in handle
await self.app(scope, receive, send)
File "D:\mSpaceLock\mSpaceLock-www\env-sqladmin\Lib\site-packages\starlette\applications.py", line 122, in __call__
await self.middleware_stack(scope, receive, send)
File "D:\mSpaceLock\mSpaceLock-www\env-sqladmin\Lib\site-packages\starlette\middleware\errors.py", line 184, in __call__
raise exc
File "D:\mSpaceLock\mSpaceLock-www\env-sqladmin\Lib\site-packages\starlette\middleware\errors.py", line 162, in __call__
await self.app(scope, receive, _send)
File "D:\mSpaceLock\mSpaceLock-www\env-sqladmin\Lib\site-packages\starlette\middleware\sessions.py", line 86, in __call__
await self.app(scope, receive, send_wrapper)
File "D:\mSpaceLock\mSpaceLock-www\env-sqladmin\Lib\site-packages\starlette\middleware\exceptions.py", line 79, in __call__
raise exc
File "D:\mSpaceLock\mSpaceLock-www\env-sqladmin\Lib\site-packages\starlette\middleware\exceptions.py", line 68, in __call__
await self.app(scope, receive, sender)
File "D:\mSpaceLock\mSpaceLock-www\env-sqladmin\Lib\site-packages\starlette\routing.py", line 718, in __call__
await route.handle(scope, receive, send)
File "D:\mSpaceLock\mSpaceLock-www\env-sqladmin\Lib\site-packages\starlette\routing.py", line 276, in handle
await self.app(scope, receive, send)
File "D:\mSpaceLock\mSpaceLock-www\env-sqladmin\Lib\site-packages\starlette\routing.py", line 66, in app
response = await func(request)
^^^^^^^^^^^^^^^^^^^
File "D:\mSpaceLock\mSpaceLock-www\env-sqladmin\Lib\site-packages\sqladmin\authentication.py", line 66, in wrapper_decorator
return await func(*args, **kwargs)
^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "D:\mSpaceLock\mSpaceLock-www\env-sqladmin\Lib\site-packages\sqladmin\application.py", line 434, in list
pagination = await model_view.list(request)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "D:\mSpaceLock\mSpaceLock-www\env-sqladmin\Lib\site-packages\sqladmin\models.py", line 768, in list
count = await self.count(request, select(func.count()).select_from(stmt))
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "D:\mSpaceLock\mSpaceLock-www\env-sqladmin\Lib\site-packages\sqladmin\models.py", line 751, in count
rows = await self._run_query(stmt)
^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "D:\mSpaceLock\mSpaceLock-www\env-sqladmin\Lib\site-packages\sqladmin\models.py", line 704, in _run_query
return await anyio.to_thread.run_sync(self._run_query_sync, stmt)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "D:\mSpaceLock\mSpaceLock-www\env-sqladmin\Lib\site-packages\anyio\to_thread.py", line 33, in run_sync
return await get_asynclib().run_sync_in_worker_thread(
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "D:\mSpaceLock\mSpaceLock-www\env-sqladmin\Lib\site-packages\anyio\_backends\_asyncio.py", line 877, in run_sync_in_worker_thread
return await future
^^^^^^^^^^^^
File "D:\mSpaceLock\mSpaceLock-www\env-sqladmin\Lib\site-packages\anyio\_backends\_asyncio.py", line 807, in run
result = context.run(func, *args)
^^^^^^^^^^^^^^^^^^^^^^^^
File "D:\mSpaceLock\mSpaceLock-www\env-sqladmin\Lib\site-packages\sqladmin\models.py", line 695, in _run_query_sync
result = session.execute(stmt)
^^^^^^^^^^^^^^^^^^^^^
File "D:\mSpaceLock\mSpaceLock-www\env-sqladmin\Lib\site-packages\sqlalchemy\orm\session.py", line 2306, in execute
return self._execute_internal(
^^^^^^^^^^^^^^^^^^^^^^^
File "D:\mSpaceLock\mSpaceLock-www\env-sqladmin\Lib\site-packages\sqlalchemy\orm\session.py", line 2188, in _execute_internal
result: Result[Any] = compile_state_cls.orm_execute_statement(
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "D:\mSpaceLock\mSpaceLock-www\env-sqladmin\Lib\site-packages\sqlalchemy\orm\context.py", line 293, in orm_execute_statement
result = conn.execute(
^^^^^^^^^^^^^
File "D:\mSpaceLock\mSpaceLock-www\env-sqladmin\Lib\site-packages\sqlalchemy\engine\base.py", line 1416, in execute
return meth(
^^^^^
File "D:\mSpaceLock\mSpaceLock-www\env-sqladmin\Lib\site-packages\sqlalchemy\sql\elements.py", line 516, in _execute_on_connection
return connection._execute_clauseelement(
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "D:\mSpaceLock\mSpaceLock-www\env-sqladmin\Lib\site-packages\sqlalchemy\engine\base.py", line 1639, in _execute_clauseelement
ret = self._execute_context(
^^^^^^^^^^^^^^^^^^^^^^
File "D:\mSpaceLock\mSpaceLock-www\env-sqladmin\Lib\site-packages\sqlalchemy\engine\base.py", line 1848, in _execute_context
return self._exec_single_context(
^^^^^^^^^^^^^^^^^^^^^^^^^^
File "D:\mSpaceLock\mSpaceLock-www\env-sqladmin\Lib\site-packages\sqlalchemy\engine\base.py", line 1988, in _exec_single_context
self._handle_dbapi_exception(
File "D:\mSpaceLock\mSpaceLock-www\env-sqladmin\Lib\site-packages\sqlalchemy\engine\base.py", line 2343, in _handle_dbapi_exception
raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
File "D:\mSpaceLock\mSpaceLock-www\env-sqladmin\Lib\site-packages\sqlalchemy\engine\base.py", line 1969, in _exec_single_context
self.dialect.do_execute(
File "D:\mSpaceLock\mSpaceLock-www\env-sqladmin\Lib\site-packages\sqlalchemy\engine\default.py", line 922, in do_execute
cursor.execute(statement, parameters)
sqlalchemy.exc.ProgrammingError: (psycopg2.errors.DuplicateAlias) table name "storage" specified more than once
[SQL: SELECT count(*) AS count_1
FROM (SELECT password.password_uuid AS password_uuid, password.storage_uuid AS storage_uuid, password.hashed_password AS hashed_password, password.valid_until AS valid_until
FROM password JOIN storage ON storage.storage_uuid = password.storage_uuid JOIN storage ON storage.storage_uuid = password.storage_uuid, mspacelock, location
WHERE CAST(password.password_uuid AS VARCHAR) ILIKE %(param_1)s OR CAST(storage.storage_uuid = password.storage_uuid AS VARCHAR) ILIKE %(param_2)s OR CAST(storage.storage_uuid = mspacelock.storage_uuid AS VARCHAR) ILIKE %(param_3)s OR CAST(location.location_uuid = storage.location_uuid AS VARCHAR) ILIKE %(param_4)s ORDER BY password.password_uuid ASC) AS anon_1]
[parameters: {'param_1': '%sn%', 'param_2': '%sn%', 'param_3': '%sn%', 'param_4': '%sn%'}]
(Background on this error at: https://sqlalche.me/e/20/f405)
class PasswordView(ModelView, model=Password):
column_list = [
Password.password_uuid,
Password.storages,
"storages.mspacelock",
"storages.location",
Password.hashed_password,
Password.valid_until,
]
column_searchable_list = [
Password.password_uuid,
Password.storages,
"storages.mspacelock",
"storages.location",
]
from sqladmin.
Sorting also causing some errors:
INFO: 127.0.0.1:53263 - "GET /password/list?sortBy=storages.location&sort=asc HTTP/1.1" 500 Internal Server Error
ERROR: Exception in ASGI application
Traceback (most recent call last):
File "D:\mSpaceLock\mSpaceLock-www\env-sqladmin\Lib\site-packages\sqlalchemy\engine\base.py", line 1969, in _exec_single_context
self.dialect.do_execute(
File "D:\mSpaceLock\mSpaceLock-www\env-sqladmin\Lib\site-packages\sqlalchemy\engine\default.py", line 922, in do_execute
cursor.execute(statement, parameters)
psycopg2.errors.UndefinedTable: missing FROM-clause entry for table "location"
LINE 2: ...e_1.storage_uuid = password.storage_uuid ORDER BY location.l...
^
The above exception was the direct cause of the following exception:
Traceback (most recent call last):
File "D:\mSpaceLock\mSpaceLock-www\env-sqladmin\Lib\site-packages\uvicorn\protocols\http\h11_impl.py", line 408, in run_asgi
result = await app( # type: ignore[func-returns-value]
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "D:\mSpaceLock\mSpaceLock-www\env-sqladmin\Lib\site-packages\uvicorn\middleware\proxy_headers.py", line 84, in __call__
return await self.app(scope, receive, send)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "D:\mSpaceLock\mSpaceLock-www\env-sqladmin\Lib\site-packages\fastapi\applications.py", line 1115, in __call__
await super().__call__(scope, receive, send)
File "D:\mSpaceLock\mSpaceLock-www\env-sqladmin\Lib\site-packages\starlette\applications.py", line 122, in __call__
await self.middleware_stack(scope, receive, send)
File "D:\mSpaceLock\mSpaceLock-www\env-sqladmin\Lib\site-packages\starlette\middleware\errors.py", line 184, in __call__
raise exc
File "D:\mSpaceLock\mSpaceLock-www\env-sqladmin\Lib\site-packages\starlette\middleware\errors.py", line 162, in __call__
await self.app(scope, receive, _send)
File "D:\mSpaceLock\mSpaceLock-www\env-sqladmin\Lib\site-packages\starlette\middleware\exceptions.py", line 79, in __call__
raise exc
File "D:\mSpaceLock\mSpaceLock-www\env-sqladmin\Lib\site-packages\starlette\middleware\exceptions.py", line 68, in __call__
await self.app(scope, receive, sender)
File "D:\mSpaceLock\mSpaceLock-www\env-sqladmin\Lib\site-packages\fastapi\middleware\asyncexitstack.py", line 20, in __call__
raise e
File "D:\mSpaceLock\mSpaceLock-www\env-sqladmin\Lib\site-packages\fastapi\middleware\asyncexitstack.py", line 17, in __call__
await self.app(scope, receive, send)
File "D:\mSpaceLock\mSpaceLock-www\env-sqladmin\Lib\site-packages\starlette\routing.py", line 718, in __call__
await route.handle(scope, receive, send)
File "D:\mSpaceLock\mSpaceLock-www\env-sqladmin\Lib\site-packages\starlette\routing.py", line 443, in handle
await self.app(scope, receive, send)
File "D:\mSpaceLock\mSpaceLock-www\env-sqladmin\Lib\site-packages\starlette\applications.py", line 122, in __call__
await self.middleware_stack(scope, receive, send)
File "D:\mSpaceLock\mSpaceLock-www\env-sqladmin\Lib\site-packages\starlette\middleware\errors.py", line 184, in __call__
raise exc
File "D:\mSpaceLock\mSpaceLock-www\env-sqladmin\Lib\site-packages\starlette\middleware\errors.py", line 162, in __call__
await self.app(scope, receive, _send)
File "D:\mSpaceLock\mSpaceLock-www\env-sqladmin\Lib\site-packages\starlette\middleware\sessions.py", line 86, in __call__
await self.app(scope, receive, send_wrapper)
File "D:\mSpaceLock\mSpaceLock-www\env-sqladmin\Lib\site-packages\starlette\middleware\exceptions.py", line 79, in __call__
raise exc
File "D:\mSpaceLock\mSpaceLock-www\env-sqladmin\Lib\site-packages\starlette\middleware\exceptions.py", line 68, in __call__
await self.app(scope, receive, sender)
File "D:\mSpaceLock\mSpaceLock-www\env-sqladmin\Lib\site-packages\starlette\routing.py", line 718, in __call__
await route.handle(scope, receive, send)
File "D:\mSpaceLock\mSpaceLock-www\env-sqladmin\Lib\site-packages\starlette\routing.py", line 276, in handle
await self.app(scope, receive, send)
File "D:\mSpaceLock\mSpaceLock-www\env-sqladmin\Lib\site-packages\starlette\routing.py", line 66, in app
response = await func(request)
^^^^^^^^^^^^^^^^^^^
File "D:\mSpaceLock\mSpaceLock-www\env-sqladmin\Lib\site-packages\sqladmin\authentication.py", line 66, in wrapper_decorator
return await func(*args, **kwargs)
^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "D:\mSpaceLock\mSpaceLock-www\env-sqladmin\Lib\site-packages\sqladmin\application.py", line 434, in list
pagination = await model_view.list(request)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "D:\mSpaceLock\mSpaceLock-www\env-sqladmin\Lib\site-packages\sqladmin\models.py", line 773, in list
rows = await self._run_query(stmt)
^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "D:\mSpaceLock\mSpaceLock-www\env-sqladmin\Lib\site-packages\sqladmin\models.py", line 704, in _run_query
return await anyio.to_thread.run_sync(self._run_query_sync, stmt)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "D:\mSpaceLock\mSpaceLock-www\env-sqladmin\Lib\site-packages\anyio\to_thread.py", line 33, in run_sync
return await get_asynclib().run_sync_in_worker_thread(
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "D:\mSpaceLock\mSpaceLock-www\env-sqladmin\Lib\site-packages\anyio\_backends\_asyncio.py", line 877, in run_sync_in_worker_thread
return await future
^^^^^^^^^^^^
File "D:\mSpaceLock\mSpaceLock-www\env-sqladmin\Lib\site-packages\anyio\_backends\_asyncio.py", line 807, in run
result = context.run(func, *args)
^^^^^^^^^^^^^^^^^^^^^^^^
File "D:\mSpaceLock\mSpaceLock-www\env-sqladmin\Lib\site-packages\sqladmin\models.py", line 695, in _run_query_sync
result = session.execute(stmt)
^^^^^^^^^^^^^^^^^^^^^
File "D:\mSpaceLock\mSpaceLock-www\env-sqladmin\Lib\site-packages\sqlalchemy\orm\session.py", line 2306, in execute
return self._execute_internal(
^^^^^^^^^^^^^^^^^^^^^^^
File "D:\mSpaceLock\mSpaceLock-www\env-sqladmin\Lib\site-packages\sqlalchemy\orm\session.py", line 2188, in _execute_internal
result: Result[Any] = compile_state_cls.orm_execute_statement(
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "D:\mSpaceLock\mSpaceLock-www\env-sqladmin\Lib\site-packages\sqlalchemy\orm\context.py", line 293, in orm_execute_statement
result = conn.execute(
^^^^^^^^^^^^^
File "D:\mSpaceLock\mSpaceLock-www\env-sqladmin\Lib\site-packages\sqlalchemy\engine\base.py", line 1416, in execute
return meth(
^^^^^
File "D:\mSpaceLock\mSpaceLock-www\env-sqladmin\Lib\site-packages\sqlalchemy\sql\elements.py", line 516, in _execute_on_connection
return connection._execute_clauseelement(
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "D:\mSpaceLock\mSpaceLock-www\env-sqladmin\Lib\site-packages\sqlalchemy\engine\base.py", line 1639, in _execute_clauseelement
ret = self._execute_context(
^^^^^^^^^^^^^^^^^^^^^^
File "D:\mSpaceLock\mSpaceLock-www\env-sqladmin\Lib\site-packages\sqlalchemy\engine\base.py", line 1848, in _execute_context
return self._exec_single_context(
^^^^^^^^^^^^^^^^^^^^^^^^^^
File "D:\mSpaceLock\mSpaceLock-www\env-sqladmin\Lib\site-packages\sqlalchemy\engine\base.py", line 1988, in _exec_single_context
self._handle_dbapi_exception(
File "D:\mSpaceLock\mSpaceLock-www\env-sqladmin\Lib\site-packages\sqlalchemy\engine\base.py", line 2343, in _handle_dbapi_exception
raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
File "D:\mSpaceLock\mSpaceLock-www\env-sqladmin\Lib\site-packages\sqlalchemy\engine\base.py", line 1969, in _exec_single_context
self.dialect.do_execute(
File "D:\mSpaceLock\mSpaceLock-www\env-sqladmin\Lib\site-packages\sqlalchemy\engine\default.py", line 922, in do_execute
cursor.execute(statement, parameters)
sqlalchemy.exc.ProgrammingError: (psycopg2.errors.UndefinedTable) missing FROM-clause entry for table "location"
LINE 2: ...e_1.storage_uuid = password.storage_uuid ORDER BY location.l...
^
[SQL: SELECT password.password_uuid, password.storage_uuid, password.hashed_password, password.valid_until, storage_1.storage_uuid AS storage_uuid_1, storage_1.storage_id, storage_1.is_occupied, storage_1.is_restricted, storage_1.rented_until, storage_1.location_uuid
FROM password JOIN storage ON storage.storage_uuid = password.storage_uuid LEFT OUTER JOIN storage AS storage_1 ON storage_1.storage_uuid = password.storage_uuid ORDER BY location.location_uuid = storage.location_uuid ASC
LIMIT %(param_1)s OFFSET %(param_2)s]
[parameters: {'param_1': 10, 'param_2': 0}]
(Background on this error at: https://sqlalche.me/e/20/f405)
Another example
INFO: 127.0.0.1:53254 - "GET /password/list?sortBy=storages.mspacelock&sort=asc HTTP/1.1" 500 Internal Server Error
ERROR: Exception in ASGI application
Traceback (most recent call last):
File "D:\mSpaceLock\mSpaceLock-www\env-sqladmin\Lib\site-packages\sqlalchemy\engine\base.py", line 1969, in _exec_single_context
self.dialect.do_execute(
File "D:\mSpaceLock\mSpaceLock-www\env-sqladmin\Lib\site-packages\sqlalchemy\engine\default.py", line 922, in do_execute
cursor.execute(statement, parameters)
psycopg2.errors.UndefinedTable: missing FROM-clause entry for table "mspacelock"
LINE 2: ...word.storage_uuid ORDER BY storage.storage_uuid = mspacelock...
^
The above exception was the direct cause of the following exception:
Traceback (most recent call last):
File "D:\mSpaceLock\mSpaceLock-www\env-sqladmin\Lib\site-packages\uvicorn\protocols\http\h11_impl.py", line 408, in run_asgi
result = await app( # type: ignore[func-returns-value]
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "D:\mSpaceLock\mSpaceLock-www\env-sqladmin\Lib\site-packages\uvicorn\middleware\proxy_headers.py", line 84, in __call__
return await self.app(scope, receive, send)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "D:\mSpaceLock\mSpaceLock-www\env-sqladmin\Lib\site-packages\fastapi\applications.py", line 1115, in __call__
await super().__call__(scope, receive, send)
File "D:\mSpaceLock\mSpaceLock-www\env-sqladmin\Lib\site-packages\starlette\applications.py", line 122, in __call__
await self.middleware_stack(scope, receive, send)
File "D:\mSpaceLock\mSpaceLock-www\env-sqladmin\Lib\site-packages\starlette\middleware\errors.py", line 184, in __call__
raise exc
File "D:\mSpaceLock\mSpaceLock-www\env-sqladmin\Lib\site-packages\starlette\middleware\errors.py", line 162, in __call__
await self.app(scope, receive, _send)
File "D:\mSpaceLock\mSpaceLock-www\env-sqladmin\Lib\site-packages\starlette\middleware\exceptions.py", line 79, in __call__
raise exc
File "D:\mSpaceLock\mSpaceLock-www\env-sqladmin\Lib\site-packages\starlette\middleware\exceptions.py", line 68, in __call__
await self.app(scope, receive, sender)
File "D:\mSpaceLock\mSpaceLock-www\env-sqladmin\Lib\site-packages\fastapi\middleware\asyncexitstack.py", line 20, in __call__
raise e
File "D:\mSpaceLock\mSpaceLock-www\env-sqladmin\Lib\site-packages\fastapi\middleware\asyncexitstack.py", line 17, in __call__
await self.app(scope, receive, send)
File "D:\mSpaceLock\mSpaceLock-www\env-sqladmin\Lib\site-packages\starlette\routing.py", line 718, in __call__
await route.handle(scope, receive, send)
File "D:\mSpaceLock\mSpaceLock-www\env-sqladmin\Lib\site-packages\starlette\routing.py", line 443, in handle
await self.app(scope, receive, send)
File "D:\mSpaceLock\mSpaceLock-www\env-sqladmin\Lib\site-packages\starlette\applications.py", line 122, in __call__
await self.middleware_stack(scope, receive, send)
File "D:\mSpaceLock\mSpaceLock-www\env-sqladmin\Lib\site-packages\starlette\middleware\errors.py", line 184, in __call__
raise exc
File "D:\mSpaceLock\mSpaceLock-www\env-sqladmin\Lib\site-packages\starlette\middleware\errors.py", line 162, in __call__
await self.app(scope, receive, _send)
File "D:\mSpaceLock\mSpaceLock-www\env-sqladmin\Lib\site-packages\starlette\middleware\sessions.py", line 86, in __call__
await self.app(scope, receive, send_wrapper)
File "D:\mSpaceLock\mSpaceLock-www\env-sqladmin\Lib\site-packages\starlette\middleware\exceptions.py", line 79, in __call__
raise exc
File "D:\mSpaceLock\mSpaceLock-www\env-sqladmin\Lib\site-packages\starlette\middleware\exceptions.py", line 68, in __call__
await self.app(scope, receive, sender)
File "D:\mSpaceLock\mSpaceLock-www\env-sqladmin\Lib\site-packages\starlette\routing.py", line 718, in __call__
await route.handle(scope, receive, send)
File "D:\mSpaceLock\mSpaceLock-www\env-sqladmin\Lib\site-packages\starlette\routing.py", line 276, in handle
await self.app(scope, receive, send)
File "D:\mSpaceLock\mSpaceLock-www\env-sqladmin\Lib\site-packages\starlette\routing.py", line 66, in app
response = await func(request)
^^^^^^^^^^^^^^^^^^^
File "D:\mSpaceLock\mSpaceLock-www\env-sqladmin\Lib\site-packages\sqladmin\authentication.py", line 66, in wrapper_decorator
return await func(*args, **kwargs)
^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "D:\mSpaceLock\mSpaceLock-www\env-sqladmin\Lib\site-packages\sqladmin\application.py", line 434, in list
pagination = await model_view.list(request)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "D:\mSpaceLock\mSpaceLock-www\env-sqladmin\Lib\site-packages\sqladmin\models.py", line 773, in list
rows = await self._run_query(stmt)
^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "D:\mSpaceLock\mSpaceLock-www\env-sqladmin\Lib\site-packages\sqladmin\models.py", line 704, in _run_query
return await anyio.to_thread.run_sync(self._run_query_sync, stmt)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "D:\mSpaceLock\mSpaceLock-www\env-sqladmin\Lib\site-packages\anyio\to_thread.py", line 33, in run_sync
return await get_asynclib().run_sync_in_worker_thread(
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "D:\mSpaceLock\mSpaceLock-www\env-sqladmin\Lib\site-packages\anyio\_backends\_asyncio.py", line 877, in run_sync_in_worker_thread
return await future
^^^^^^^^^^^^
File "D:\mSpaceLock\mSpaceLock-www\env-sqladmin\Lib\site-packages\anyio\_backends\_asyncio.py", line 807, in run
result = context.run(func, *args)
^^^^^^^^^^^^^^^^^^^^^^^^
File "D:\mSpaceLock\mSpaceLock-www\env-sqladmin\Lib\site-packages\sqladmin\models.py", line 695, in _run_query_sync
result = session.execute(stmt)
^^^^^^^^^^^^^^^^^^^^^
File "D:\mSpaceLock\mSpaceLock-www\env-sqladmin\Lib\site-packages\sqlalchemy\orm\session.py", line 2306, in execute
return self._execute_internal(
^^^^^^^^^^^^^^^^^^^^^^^
File "D:\mSpaceLock\mSpaceLock-www\env-sqladmin\Lib\site-packages\sqlalchemy\orm\session.py", line 2188, in _execute_internal
result: Result[Any] = compile_state_cls.orm_execute_statement(
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "D:\mSpaceLock\mSpaceLock-www\env-sqladmin\Lib\site-packages\sqlalchemy\orm\context.py", line 293, in orm_execute_statement
result = conn.execute(
^^^^^^^^^^^^^
File "D:\mSpaceLock\mSpaceLock-www\env-sqladmin\Lib\site-packages\sqlalchemy\engine\base.py", line 1416, in execute
return meth(
^^^^^
File "D:\mSpaceLock\mSpaceLock-www\env-sqladmin\Lib\site-packages\sqlalchemy\sql\elements.py", line 516, in _execute_on_connection
return connection._execute_clauseelement(
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "D:\mSpaceLock\mSpaceLock-www\env-sqladmin\Lib\site-packages\sqlalchemy\engine\base.py", line 1639, in _execute_clauseelement
ret = self._execute_context(
^^^^^^^^^^^^^^^^^^^^^^
File "D:\mSpaceLock\mSpaceLock-www\env-sqladmin\Lib\site-packages\sqlalchemy\engine\base.py", line 1848, in _execute_context
return self._exec_single_context(
^^^^^^^^^^^^^^^^^^^^^^^^^^
File "D:\mSpaceLock\mSpaceLock-www\env-sqladmin\Lib\site-packages\sqlalchemy\engine\base.py", line 1988, in _exec_single_context
self._handle_dbapi_exception(
File "D:\mSpaceLock\mSpaceLock-www\env-sqladmin\Lib\site-packages\sqlalchemy\engine\base.py", line 2343, in _handle_dbapi_exception
raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
File "D:\mSpaceLock\mSpaceLock-www\env-sqladmin\Lib\site-packages\sqlalchemy\engine\base.py", line 1969, in _exec_single_context
self.dialect.do_execute(
File "D:\mSpaceLock\mSpaceLock-www\env-sqladmin\Lib\site-packages\sqlalchemy\engine\default.py", line 922, in do_execute
cursor.execute(statement, parameters)
sqlalchemy.exc.ProgrammingError: (psycopg2.errors.UndefinedTable) missing FROM-clause entry for table "mspacelock"
LINE 2: ...word.storage_uuid ORDER BY storage.storage_uuid = mspacelock...
^
[SQL: SELECT password.password_uuid, password.storage_uuid, password.hashed_password, password.valid_until, storage_1.storage_uuid AS storage_uuid_1, storage_1.storage_id, storage_1.is_occupied, storage_1.is_restricted, storage_1.rented_until, storage_1.location_uuid
FROM password JOIN storage ON storage.storage_uuid = password.storage_uuid LEFT OUTER JOIN storage AS storage_1 ON storage_1.storage_uuid = password.storage_uuid ORDER BY storage.storage_uuid = mspacelock.storage_uuid ASC
LIMIT %(param_1)s OFFSET %(param_2)s]
[parameters: {'param_1': 10, 'param_2': 0}]
(Background on this error at: https://sqlalche.me/e/20/f405)
Or maybe I just using it in an unintended way...
from sqladmin.
I think it would help if you posted a minimal code for your models and their columns, I assume for example Password has multiple Storages so you canβt sort or search by that, it should be by a Storage field, unless Iβm wrong.
from sqladmin.
I got the same error as @NightSkySK, how was you able to fix this error?
I also need to sort and search in foreign table columns.
from sqladmin.
@aminalaee Can't find how to use a new functionality in the documentation.
from sqladmin.
This is not released yet, you can test it out by installing from git, just to test it out.
from sqladmin.
Sure, I use version from git
from sqladmin.
@aminalaee Hi, so, do you have any instructions, how to use this new functionality with search and sort by foreign columns? Maybe, some example?
from sqladmin.
Related Issues (20)
- Static file over https in AWS with ECS and LoadBalancer HOT 16
- CSS and Javascript files for the Admin not loaded HOT 2
- Overriden form text field with FileUpload field. HOT 7
- Not able to edit fields in sql admin when using s3 filetype HOT 3
- Unexpected main page view HOT 6
- Add ModelView.form_query property to create form-filtering feature HOT 2
- override delete model method to perform soft delete HOT 1
- form_overrides doesn't work HOT 2
- SqlAlchemy dataclass support missing HOT 6
- Multiple Admin Instances result in wrong URL's to the views HOT 1
- Ajax query passes incorrect urn when admin mounted on sub fastapi app HOT 3
- Sort symbol is incorrect (wrong direction)
- sqladmin + jinja templates conflict index.html HOT 3
- Raised value error HOT 5
- Define default values via form_args
- TypeError: UUID objects are immutable (fastapi_users) HOT 4
- ValueError on passing unexcepted parameter
- Use HTMX HOT 2
- jinja2.exceptions.TemplateNotFound: list.html HOT 3
- What about Router per View? HOT 1
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
π Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. πππ
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google β€οΈ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from sqladmin.