python - 将 QuerySelectField 选定的数据对象转换为文字值
问题描述
我正在创建我的应用程序的一部分,管理员可以在其中注册用户。我有一个注册表单,其中表单的元素之一是QuerySelectField
从 db 获取位置列表,用户也可以链接到该列表。我可以显示QuerySelectField
正确的信息,但在提交表单时出现错误
Sqlalchemy.exc.ArgumentError:对象“站点”作为 SQL 文字值不合法
当尝试在我的表单站点模型中查询数据库以查找所选选项的名称时,会填充此错误,QuerySelectField
以便我可以将特定站点的 ID 存储在变量中以供进一步使用。
我不确定如何使对象成为 sqlalchemy 可以读取的文字值。我尝试将它包装在 str() 中,但这并没有做任何事情。顺便说一句,我是个菜鸟,所以我仍在努力掌握烧瓶的某些元素。
这是我要完成的工作的表格
def site():
return Sites.query.all()
class RegistrationForm(FlaskForm):
username = StringField('Username', validators=[DataRequired(),
Length(min=2, max=20)])
email = StringField('Email', validators=
[DataRequired(), Email()])
password = PasswordField('Password', validators=[DataRequired()])
confirm_pass = PasswordField('Confirm Password', validators=
[DataRequired(), EqualTo('password')])
admin_status = BooleanField('Check for Admin Status')
sitechoices = QuerySelectField(query_factory=site, allow_blank=False,
get_label='sitename')
这是我的 routes.py 中的路线信息
@app.route('/register', methods=['POST', 'GET'])
@login_required
def register():
forms = RegistrationForm()
if forms.validate_on_submit():
hashed_pw = bcrypt.generate_password_hash(forms.password.data).decode('utf-8')
siteid = Sites.query.filter_by(sitename=forms.sitechoices.data).first().id
user = User(site = forms.sitechoices.data, username = forms.username.data, email = forms.email.data,
password = hashed_pw, adminstatus= forms.admin_status.data, sitelink=siteid)
db.create_all()
db.session.add(user)
db.session.commit()
flash(f"{form.username.data} has been added!")
return redirect(url_for('dash'))
return render_template('register.html', name = 'login', form=forms)
这是所需的模板信息:
<div class="form-group">
{{form.sitechoices}}
</div>
我想从 queryselectfield 中的模型中检索站点名称,并能够使用该选定选项注册用户。
解决方案
在查询选择字段中返回对象,因此您需要使用 form.sitechoices.data.sitename 来保存提交的表单
推荐阅读
- mongodb - 从 Postman 向 Heroku 发送请求返回 503 和/或 UnknownReplWriteConcern
- spring-boot - 如何配置 @PreAuthorize 以识别我登录用户的 ID?
- javascript - 倒计时功能在 12 秒后继续循环 - 请协助
- wpf - 如何确定您使用的是 WinUI 2 还是 WinUI 3?
- javascript - chart.js:如何获取标签的图例颜色
- asp.net-mvc - 如何在一张表中显示关系模型?
- tensorflow - 如何为 tensorflow 冻结模型生成 prototxt 文件?
- python - 将浮点数转换为日期
- reactjs - Apollo Client - 如何使用使用 compose 的 HOC 组件测试使用多个查询的组件
- python - 如何遍历列表并转换数据类型