我有一个简单的用户模型,定义如下:
# models.py from datetime import datetime from myapp import db class User(db.Model): id = db.Column(db.Integer(), primary_key=True) email = db.Column(db.String(100), unique=True) password = db.Column(db.String(100)) date_updated = db.Column(db.DateTime()) def __init__(self, email, password, date_updated=None): self.email = email self.password = password self.date_updated = datetime.utcnow()
当我创建一个新的User对象时,我的date_updated字段将设置为当前时间。我想要做的是使它每当我将更改保存到User对象时,我的date_updated字段就会自动设置为当前时间。
date_updated
我已经仔细阅读过文档,但是对于我一生来说,我似乎找不到任何对此的引用。我是SQLAlchemy的新手,所以我确实没有任何经验可以借鉴。
只需在列字段中添加server_default或default参数:
server_default
default
created_on = db.Column(db.DateTime, server_default=db.func.now()) updated_on = db.Column(db.DateTime, server_default=db.func.now(), server_onupdate=db.func.now())
我更喜欢{created,updated}_on列名称。;)
{created,updated}_on
有关列插入/更新默认值的 SQLAlchemy文档。
[编辑]:更新了代码以server_default在代码中使用参数。
[Edit 2]:替换onupdate为server_onupdate参数。
onupdate
server_onupdate