所有,SQLAlchemy的 - 的onupdate不會覆蓋
我工作的一個審計混入了SQLAlchemy的和不知道到底如何做到這一點的電流值。我的班級看起來是這樣的:
class AuditColumns(object):
created_dt = Column(DateTime,
default=datetime.utcnow(),
nullable=False)
created_by = Column(String(64),
default=current_user,
nullable=False)
updated_dt = Column(DateTime,
default=datetime.utcnow(),
nullable=False,
onupdate=datetime.utcnow())
updated_by = Column(String(64),
default=current_user,
nullable=False,
onupdate=current_user)
更新的是好的,因爲我只需要在表級別記錄最新的更新;任何重要的審計將在一個單獨的表中詳細更新/刪除等。
我的問題是;我不希望更新created_dt/by列。我知道,在我的代碼中,我可以在更新對象時簡單地忽略它們;但另一個編碼者可能;所以我確實希望在每次更新之前確保它會覆蓋自身的值,或者如果有人試圖更改它(如果有人希望更改後者),則會引發錯誤。
我的SQLAlchemy技能還在開發中,會不會是事件發生的地方;或者有什麼可以通過覆蓋一些通用的聲明性函數,如save()或before_save()或任何可能存在的東西來完成?
我會繼續尋找答案 - 但幫助找到解決方案(我不希望被授予代碼)是可取的。