如何在model_form中使用current_user

时间:2016-12-13 22:42:40

标签: wtforms flask-wtforms flask-mongoengine

我需要过滤一个只显示用户公司中的群组的选择菜单。对于sqlalchemy,有QuerySelectField,但是,这似乎没有在flask-mongoengine中可用。理想情况下,我想将flask_login 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置于请求上下文之外,因此会导致错误。有没有人对如何做到这一点有一个聪明的想法?

1 个答案:

答案 0 :(得分: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)