我正在编写一个带有SQLAlchemy后端的应用程序,该应用程序具有一个定义如下的字段的模型:
class User(db.Model):
id = db.Column(db.Integer, primary_key=True)
class MyObject(db.Model):
user = relationship(User, primaryjoin=user_id==User.id)
用户通过Flask登录进行登录。
在这些观点中,我经历了某种奇怪的行为:
36 import ipdb; ipdb.set_trace()
---> 37 if theobject.user != current_user:
38 abort(403)
这总是以403失败。
ipdb> theobject.user
<User emes [emes@test.com]>
ipdb> current_user
<User emes [emes@test.com]>
ipdb> theobject.user == current_user
False
为什么会发生这种情况?实施User.__eq__
是正确的方法吗?
你能根据Id进行比较吗?例如
theobject.user.id == current_user.id
# or
theobject.user.email == current_user.email