我正在使用flask和whooshalchemy在一个简单的Web应用程序中实现全文搜索。 Post和User模型的定义如下:
class Post(db.Model):
__searchable__ = ['body']
id = db.Column(db.Integer, primary_key=True)
body = db.Column(db.Text)
author_id = db.Column(db.Integer, db.ForeignKey('user.id'))
class User(db.Model):
id = db.Column(db.Integer, primary_key=True)
posts = db.relationship('Post', backref='author', lazy='dynamic')
whooshalchemy.whoosh_index(app, Post)
在某些视图中,我会检查是否允许当前用户编辑帖子
post = Post.query.get(pid)
if current_user != post.author:
abort(403)
由于某些原因current_user
和post.author
在调用whooshalchemy.whoosh_index(app, Post)
时不是同一个对象。如果我注释掉该行,那么该帖子所有权的测试将按预期工作。
为什么会这样? whooshalchemy索引是否会创建post.author
的副本,该副本与从user
表中加载的副本不同?我该怎么做才能纠正它?