【发布时间】:2021-01-19 03:40:40
【问题描述】:
我正在尝试将 SQLAlchemy 的查询结果附加到列表中。
我的应用程序包含以下模型 ("Game)" 和 games_query(用作 FlaskForm 的 QuerySelectField query_factory)。 编辑:还添加了 FlaskForm,因为问题似乎与表单本身有关,而不是 query_factory。
class Game(db.Model):
game_id = db.Column(db.Integer, primary_key=True, nullable=False)
title = db.Column(db.String, nullable=False, unique=True)
records = db.relationship('Record', backref='game')
def games_query():
games_list = []
for g in Game.query:
games_list.append(g.title)
print(g.title)
return games_list
class ScoreForm(FlaskForm):
name = StringField('Name', validators=[InputRequired()])
score = IntegerField('Score', validators=[InputRequired()])
game = QuerySelectField('Game', query_factory=games_query)
submit = SubmitField('Submit')
games_query 返回以下错误,尽管在控制台中打印 g.title 返回有效值(游戏标题):
sqlalchemy.orm.exc.UnmappedInstanceError: Class 'builtins.str' is not 映射
编辑:将 query_factory 设置为返回基本列表的函数会导致显示相同的错误。
def games_query():
games_list = ["Mario", "Zelda"]
return games_list
我怎样才能绕过这个错误,所以 games_query 返回可以作为选项传递给相关表单字段的游戏名称列表?
【问题讨论】:
-
更新了最初的帖子,因为我意识到错误与 FlaskForm 而不是 query_factory 有关。
标签: python flask sqlalchemy flask-sqlalchemy flask-wtforms