我正在创建一个表单以查找其他小组成员,其中所有成员均属于部门。某些部门(但不是全部部门)具有内部ID,可用于标识每个成员。每个部门对于此内部成员ID都有不同的术语。部门A称为“个人标识符”,部门B称为“唯一ID”,等等。在数据库departments
表中,member_id_term
字段存储部门称为内部成员ID的内容。在数据库的members
表中,internal_id
存储成员的internal_id
(如果他们属于internal_id
系统的部门)。
在表单的第一页上,用户选择部门,在表单的第二页上,如果用户选择了使用内部成员ID的部门,则要求他们放置内部成员ID。 / p>
我的策略是在views.py
中创建一个名为member_id_term
的变量,如果没有form.dept.data
则将其设置为0,而将member_id_term
设置为{{1} } form.dept.data.member_id_term
存在时。然后,在form.dept.data
中,如果存在input_find_member.html
,我将有条件地显示internal_id
的输入字段。
问题:在提交表单之前,我无权访问member_id_term
。提交表单之前如何访问此值?
这是我当前拥有的代码。它在form.dept.data
上引发错误,并说member_id_term = 0 if not form.dept.data else form.dept.data.member_id_term
为空。
form.dept.data
forms.py
class FindMemberForm(Form):
name = StringField(
'name', default='', validators=[Regexp('\w*'), Length(max=50),
Optional()]
)
internal_id = StringField('internal_id', default='', validators=[Regexp('\w*'), Length(max=55)])
dept = QuerySelectField('dept', validators=[DataRequired()],
query_factory=dept_choices, get_label='name')
views.py
这是@main.route('/find', methods=['GET', 'POST'])
def get_officer():
form = FindMemberForm()
member_id_term = 0 if not form.dept.data else form.dept.data.member_id_term
if form.validate_on_submit():
return redirect(url_for('main.get_gallery'), code=307)
return render_template('input_find_member.html', form=form)
{% extends "base.html" %}
{% block content %}
input_find_member.html
我已经阅读了这些页面
Flask WTForms: how do I get a form value back into Python?
Get data from WTForms form
populate WTForms select field using value selected from previous field
感谢阅读!