【发布时间】:2021-02-24 19:45:54
【问题描述】:
我试图仅显示当前登录用户在网站上发布的帖子。我相信我需要 filter_by 关键字。我查看了 SQlalchemy 的文档,但仍然在语法上遇到困难并使其工作:
进口:
from project.models import User, Post
from flask_login import login_user, current_user, logout_user, login_required
路线:
@app.route("/history")
def history():
page = request.args.get('page', 1, type=int)
posts = Post.query.order_by(Post.end_date.desc()).filter_by(User.id==current_user)
return render_template('history.html', posts=posts, title='About')`
用户/帖子页面:
class User(db.Model, UserMixin):
id = db.Column(db.Integer, primary_key=True)
username = db.Column(db.String(20), unique=True, nullable=False)
email = db.Column(db.String(120), unique=True, nullable=False)
password = db.Column(db.String(60), nullable=False)
posts = db.relationship('Post', backref='author', lazy=True)`
class Post(db.Model):
id = db.Column(db.Integer, primary_key=True)
identification = db.Column(db.String(10), nullable=False)
date_posted = db.Column(db.Date, nullable=False, default=datetime.utcnow)
notes = db.Column(db.Text)
user_id = db.Column(db.Integer, db.ForeignKey('user.id'), nullable=False)`
错误: 当我输入 filter_by(User.id==current_user):
TypeError: filter_by() takes 1 positional argument but 2 were given
当我输入 filter_by(user.id==current_user) 时不确定用户是否应该大写:
NameError: name 'user' is not defined
当我输入 filter_by(user_id=current_user)
sqlalchemy.exc.ArgumentError: Object User('test', 'test@yahoo.com'), '1' is not legal as a SQL literal value
感谢您的帮助
【问题讨论】:
-
我试过:filter(Post.user_id==current_user.id),但我的页面根本没有显示任何帖子,这让我相信我在那里搞砸了一些东西。如果我执行 'current_user' 而不是 'current_user.id' 我会返回原始问题中的最后一个错误代码。任何更多的帮助将不胜感激!
标签: python html sqlalchemy