将变量传递到WTForms类中

问题描述 投票:0回答:1

我对Python和Flask相对缺乏经验,并且在尝试将变量传递给WTForms类时陷入困境。

这是我所拥有的:

views.py

@app.route('/teacher/tasks/new')
@login_required
def new_hw_task():
    classes = Class.query.filter_by(userid=current_user.userid).all()

    form = NewTaskForm(classes = classes)


    return render_template('/teacher/new_hw_task.html', form=form)

forms.py

class NewTaskForm(FlaskForm):

    classes = SelectMultipleField('Select classes to assign this homework to', choices = [("1", "Class 1"), ("2","Class 2")])

new_hw_task.html

<div class="form-group">
        {{ form.classes.label }}
        {{ form.classes(class_="form-control selectpicker", placeholder=form.classes.description, title="Select at least one class to assign", show_tick=true)}}
</div>

我想要classes变量(在[[models.py中定义的Class类的实例-是的,是的,我知道拥有一个叫做'Class'的类是多么草率的))在forms.py中,以便我可以用SelectMultipleField中的选项替换classes中的选项。但是,我找不到通过它的方法(您可以看到我已经尝试过将classes=classes放在NewTaskForm之后的括号中)。

实际上,我的首选方法是从

forms.py

内部简单地访问current_user(由flask_login设置的基于会话的对象),但是我似乎也无法做到这一点如果我在文件顶部导入current_user。有人能向我解释我在哪里出问题了吗?
python flask flask-wtforms flask-login
1个回答
0
投票
SelectField的WTForms文档说明了如何从视图将变量传递到表单中。就像将选项列表分配给SelectField一样简单。反过来,您从字段构造函数中删除form.field.choices关键字参数。

适合您的情况,看起来像这样。

choices=

© www.soinside.com 2019 - 2024. All rights reserved.