Я использую представление модели с помощью flask-admin и хочу отфильтровать столбец в представлении редактирования/создания. Столбец/поле - это отношение, и я хочу показывать только поля, принадлежащие вошедшему в систему пользователю, т.е. relationship_id == user.id
Как я могу отфильтровать столбец в форме редактирования с помощью Flask-Admin ModelView?
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