whooshalchemy索引会改变参考吗?

时间:2014-04-08 20:28:53

标签: sqlalchemy flask whoosh

我正在使用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_userpost.author在调用whooshalchemy.whoosh_index(app, Post)时不是同一个对象。如果我注释掉该行,那么该帖子所有权的测试将按预期工作。

为什么会这样? whooshalchemy索引是否会创建post.author的副本,该副本与从user表中加载的副本不同?我该怎么做才能纠正它?

1 个答案:

答案 0 :(得分:0)

官方的whooshalchemy有一个错误 - 米格尔覆盖了它here。使用他的固定版本here,这应该可以解决您的问题。