私は次のように定義された単純なユーザーモデルを持っています:
# 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
列名を好みます。 ;)
列の挿入/更新のデフォルト に関するSQLAlchemyドキュメント。
[編集]:コードでserver_default
引数を使用するようにコードを更新しました。
[編集2]:onupdate
をserver_onupdate
引数に置き換えました。
date_created = db.Column(db.DateTime, default=db.func.current_timestamp())
date_modified = db.Column(db.DateTime, default=db.func.current_timestamp(),
onupdate=db.func.current_timestamp())