我有一个简单的用户模型,定义如下:
# 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
字段被设置为当前时间。我想要做的是让它每当我保存对我的用户对象的更改时,我的date_updated
字段自动设置为当前时间。
我已经搜索了文档,但就我的生活而言,我似乎找不到任何对此的引用。我是 SQLAlchemy 的新手,所以我真的没有任何经验可以借鉴。
希望得到一些反馈,谢谢。
最佳答案
只需将 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
列名称。 ;)
关于 column insert/update defaults 的 SQLAlchemy 文档.
[编辑]:更新代码以在代码中使用 server_default
参数。
[编辑 2]:将 onupdate
替换为 server_onupdate
参数。
关于database - 如何自动填充 SQLAlchemy 数据库字段? (Flask-SQLAlchemy),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12154129/