После попытки создать сообщение в моем приложении фляги, это сообщение об ошибках появляется 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)
...
Вот код для route.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 %}