2016-12-13 4 views
0

Мне нужно отфильтровать меню выбора, отображающее только группы в компании пользователя. С sqlalchemy был QuerySelectField, однако, это, похоже, не доступно в flask-mongoengine. В идеале, я хотел бы передать flask_login CURRENT_USER в model_form следующим образом:Как использовать current_user в model_form

wtfUser = model_form(User, wtf.Form, exclude=[ 'password'], field_args = { 
    'group' : { 'queryset': Group.objects(company = current_user.group.company) }, 
    'roles' : { 'queryset': Role.objects(name__ne = 'admin').order_by('name') } 
}) 

Однако, поскольку это ставит CURRENT_USER вне контекста запроса, это приводит к ошибкам. У кого-нибудь есть умная идея о том, как это сделать?

+0

Связанная проблема GitHub: https://github.com/MongoEngine/flask-mongoengine/issues/290 –

ответ

0

Не самый элегантный подход, однако, он работает. В views.py я делаю следующее. Если у вас есть лучший подход, пишите.

def user(id): 
    user = User.objects.get_or_404(id = id) 
    wtf_user = wtfUser(obj = user) 
    wtf_user.group.queryset = Group.objects(id = current_user.group.id) 
    return render_template('user.html', wtf_user = wtf_user) 
Смежные вопросы