Flask Admin Фильтр по вычисляемым свойствам - PullRequest
0 голосов
/ 24 сентября 2018

Я бы хотел отфильтровать результаты своей работы с flask-admin по вычисленному свойству, которое извлекает статус из столбца из MongoDB.Ниже мой Кодекс, который, кажется, не работает.Когда я пытаюсь сделать это с не вычисляемым столбцом, он работает нормально.Но когда я пытаюсь с моим вычисляемым столбцом, я вижу значение ENABLED, но при фильтрации только по ENABLED я ничего не получаю, а при фильтрации по чему-либо, кроме ENABLED, я получаю все.

Вот объект модели

class Foo(db.Model):
    __tablename__ = 'foo'
    bar = db.Column(db.String(100))

    @property
    def bar_status(self):
        status = get_status_for_bar(self.bar) # Checks mongo for record
        return status if status is not None else "Not in list"

Просмотр

# Create custom filter class
class FilterBarEnabled(BaseSQLAFilter):
    def apply(self, query, value, alias=None):
        return query.filter(self.column != "ENABLED")

    def operation(self):
        return 'is Enabled'


class FooModelView(BaseModelView):
    can_view_details = True
    column_list = ('bar_status')
    page_size = 5

    column_filters = [
        FilterEnabled(column=Foo.bar_status, name='Suspicious'),
    ]

1 Ответ

0 голосов
/ 15 апреля 2019

Похоже, что администратор флакона делает фильтр / 'sort by' на основе sql (он позволяет не читать все данные из базы данных), поскольку вычисляемое свойство не может быть преобразовано в sql, и вы не можете фильтровать / сортировать их

...