我有一个User模型,还有一个密码列(PasswordType),以及许多其他列。当我尝试这样做的时候
user = # get some user with some query
print(user.password)
# there is a password
user.password = 'something else'
db.session.is_modified(user)
# True
db.session.commit()
print(user.password)
# prints new password
user.password = None
db.session.is_modified(user)
# True
db.session.commit()
print(user.password)
# This correctly prints None
# Now the funny part,
user.password = 'something new again'
db.session.is_modified(user)
# False
db.session.commit()
print(user.password)
# Prints None again.我已经干了好几个小时了,弄不清楚为什么会发生这种事。
发布于 2015-01-11 22:56:03
问题在于PasswordType in SQLAlchemy-utils。
当我给force_auto_coercion打电话时,它就能工作了。
发布于 2015-01-09 15:37:28
这可能会回答你的问题:看看这个:modified
使用此方法进行测试时,Session.dirty集合中的实例可能报告为False。这是因为对象可能通过属性突变接收到更改事件,从而将其放置在Session.dirty中,但最终状态与从数据库加载的状态相同,因此这里没有任何净更改。
您还可能希望将其用于状态管理实用程序(以了解您的实例位于哪个状态)。
>>> from sqlalchemy.orm.util import object_state
>>> print object_state(instance)https://stackoverflow.com/questions/27860766
复制相似问题