python - 遍历 SQLAlchemy 关系 - TypeError 和 backref 问题
问题描述
尝试在我的烧瓶应用程序中创建帖子后,出现此错误消息TypeError: 'author' is an invalid keyword argument for Post
。
这是我的models.py中的以下代码:
class User(db.Model, UserMixin):
id = db.Column(db.Integer, primary_key=True)
posts = db.relationship('Post', backref='author', lazy=True)
colleges_accepted = db.relationship('CollegesAccepted', backref='author', lazy=True)
posts = db.relationship('Post', primaryjoin="User.id==Post.author_id")
...
class Post(db.Model):
id = db.Column(db.Integer, primary_key=True)
author_id = db.Column(db.Integer, db.ForeignKey('user.id'), nullable=False)
...
class CollegesAccepted(db.Model):
id = db.Column(db.Integer, primary_key=True)
user_id = db.Column(db.Integer, db.ForeignKey('user.id'), nullable=False)
...
这是 routes.py 的代码:
@app.route("/post/new", methods=['GET', 'POST'])
@login_required
def new_post():
form = PostForm()
if form.validate_on_submit():
post = Post(title=form.title.data,
content=form.content.data,
author=current_user,
college_attending=current_user.college_attending)
db.session.add(post)
db.session.commit()
flash('Your post has been created!', 'success')
return redirect(url_for('home'))
return render_template('create_post.html', title='New Post', form=form)
但这并没有给我预期的结果 - 显示帖子时,我想显示作者/用户的属性以及帖子内容。我想使用我在 models.py 中定义的关系能够在 html/jinja2 模板中执行类似的操作:
{% for college in post.author.colleges_accepted_to %}
{{ college }}
{% endfor %}
解决方案
您已在关系上设置了 backref colleges_accepted
,但没有在posts
关系上设置。所以你的post
对象不知道如何得到它的author
.
此外,您声明colleges_accepted
但随后colleges_accepted_to
在您的模板中使用。
推荐阅读
- javascript - 电子没有执行我的 JS
- docker - 无法运行或删除图像或容器(overlay2 失败)
- excel - 在 Excel 中计算下订单的频率(最小/最大/平均)
- reactjs - 如何将数据传递到一个页面中
在反应? - informatica-powercenter - 信息技术 | 具有更多目标的会话的性能影响
- html - type='file' 在 angularjs 中不起作用
- c - 如何使二维排列的参数在函数中使用
- sql-server - 如何在 SQL Server 中删除延期日期
- bash - 如何通过 grep 命令正确使用正则表达式组捕获?
- reference - 当旧的枚举被丢弃时,有没有办法从 &mut 枚举中提取值?