SQLAlchemy データベース フィールドを自動的に入力するにはどうすればよいですか? (Flask-SQLAlchemy) 質問する

SQLAlchemy データベース フィールドを自動的に入力するにはどうすればよいですか? (Flask-SQLAlchemy) 質問する

次のように定義された単純な User モデルがあります。

# 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は自動的に現在の時刻に設定されます。

ドキュメントを徹底的に調べましたが、これに関する参照がまったく見つかりません。SQLAlchemy についてはまだ初心者なので、参考にできる経験はまったくありません。

フィードバックをいただければ幸いです。ありがとうございます。

ベストアンサー1

列フィールドに引数を追加する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

おすすめ記事