Ana*_*ees 9 python sqlalchemy flask-sqlalchemy
我有这门课:
class User(base):
__tablename__='User'
name = Column(.......
def __init__(self, name):
self.name = name
@validates('name')
def validate_name(self, key, name):
if blah blah blah:
return name
else:
raise exception.....
Run Code Online (Sandbox Code Playgroud)
创建一个新用户并将他存储在数据库中...
if __name__ == '__main__':
user = User('foo')
session.add(user)
session.commit() #validation works here
Run Code Online (Sandbox Code Playgroud)
更新用户时:
if __name__ == '__main__':
user = session.query(User).filter_by(name=='foo').first()
user.name = 'bar'
session.add(user)
session.commit() #validation not working here
Run Code Online (Sandbox Code Playgroud)
存储新用户时,验证有效,但更新现有用户时,验证无效
问:如何在使用@validates 更新其值时验证表列?
谢谢 :)
Mak*_*ker -1
sqlalchemy.orm.validates工作正常,并在插入或更新时启动。
class Account(Base):
# ...rest
password = Column('password', String(50))
@validates('password')
def hash_password(self, key, val):
salt = bcrypt.gensalt()
encodedpw = val.encode()
hashedpw = bcrypt.hashpw(encodedpw, salt)
return hashedpw.decode()
Run Code Online (Sandbox Code Playgroud)
这是我更新的方式Account
acc db_session.get(Account, '<account_id>')
acc.password = '<new_passw>'
db_session.commit()
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
464 次 |
| 最近记录: |