Как я могу отфильтровать столбец в форме редактирования с помощью Flask-Admin ModelView?

Я использую представление модели с помощью flask-admin и хочу отфильтровать столбец в представлении редактирования/создания. Столбец/поле - это отношение, и я хочу показывать только поля, принадлежащие вошедшему в систему пользователю, т.е. relationship_id == user.id


person mergesort    schedule 08.04.2015    source источник
comment
Это также то, что я ищу, пожалуйста, поделитесь своим решением, если оно у вас есть, спасибо :)   -  person Lawrence Liu    schedule 16.06.2015
comment
Я смог понять это и добавил код ниже   -  person mergesort    schedule 16.06.2015


Ответы (2)


На самом деле я нашел для этого более простой способ, как показано ниже, кажется, нет необходимости переопределять метод edit_form в ModelView, просто передайте функцию фильтрации как именованный параметр (query_factory) в form_args, и он работает как очаровательный!.

class CustomModelView(ModelView):
    form_args = dict(
        status = dict(label='Status', query_factory=filtering_function)
    )

def filtering_function():
   return app.db.query(CustomModel).filter_by(field_to_filter=my_criteria)
person Lawrence Liu    schedule 17.06.2015

Я смог понять это. Надеюсь, приведенный ниже код поможет. Это работает очень хорошо для меня.

Ниже приведено примерное представление кода:

class CustomModelView(ModelView):
    def edit_form(self, obj):
        return CustomModelForm(obj=obj)

def filtering_function():
   return app.db.query(CustomModel).filter_by(field_to_filter=my_criteria)

#from wtforms.form import Form
class CustomModelForm(Form):
    field_to_filter = QuerySelectField(query_factory=filtering_function)
person mergesort    schedule 16.06.2015