Commit 8679ea33 authored by Serge S. Koval's avatar Serge S. Koval

Filters for remote columns will work through explicitly specified foreign key.

parent 6a9f6312
......@@ -62,7 +62,7 @@ class PostAdmin(sqlamodel.ModelView):
searchable_columns = ('title', User.username)
column_filters = (User,
column_filters = ('user',
'title',
'date',
filters.FilterLike(Post.title, 'Fixed Title', options=(('test1', 'Test 1'), ('test2', 'Test 2'))))
......
from sqlalchemy.orm.attributes import InstrumentedAttribute
from sqlalchemy.orm import subqueryload
from sqlalchemy.sql.expression import desc
......@@ -280,10 +281,10 @@ class ModelView(BaseModelView):
if attr is None:
raise Exception('Failed to find field for filter: %s' % name)
if hasattr(attr, '_sa_class_manager'):
if hasattr(attr, 'property') and hasattr(attr.property, 'direction'):
filters = []
for p in self._get_model_iterator(attr):
for p in self._get_model_iterator(attr.property.mapper.class_):
if hasattr(p, 'columns'):
# TODO: Check for multiple columns
column = p.columns[0]
......@@ -291,7 +292,7 @@ class ModelView(BaseModelView):
if column.foreign_keys or column.primary_key:
continue
visible_name = '%s / %s' % (self.get_column_name(attr.__table__.name),
visible_name = '%s / %s' % (self.get_column_name(attr.prop.table.name),
self.get_column_name(p.key))
type_name = type(column.type).__name__
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment