0

ユーザーの会社のグループのみを表示する選択メニューをフィルタリングする必要があります。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 をリクエスト コンテキストの外に配置するため、エラーになります。これを行う方法について賢いアイデアを持っている人はいますか?

4

1 に答える 1

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)
于 2017-08-20T18:35:36.667 に答える