如何使用model_form中的current_user

问题描述:

我需要过滤一个选择菜单,只显示用户公司中的组。用sqlalchemy有QuerySelectField,但是,这似乎并没有在烧瓶-mongoengine中可用。理想情况下,我想通过flask_login CURRENT_USER到model_form如下:如何使用model_form中的current_user

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 –

不是最优雅的方法,但是,它的工作原理。在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)