2
我在規則和RuleStats對象之間有一對一的關係。我試圖在規則的任何字段更新時修改RuleStats上的last_updated
字段。如果他們不是兩個單獨的類,它會看起來像這樣。如何更新SQLAlchemy中的更新相關對象?
class Rule(Base):
__tablename__ = 'rules'
def __init__(self, **kwargs):
Base.__init__(self, **kwargs)
self.stats = RuleStats(rule=self)
id = Column(Integer, autoincrement=True, primary_key=True)
description = Column(String, nullable=False, default='')
# ... more fields
last_updated = Column(DateTime, default=datetime.now, onupdate=datetime.now, nullable=False)
但我怎麼做,如果我有兩個不同的對象,
class Rule(Base):
__tablename__ = 'rules'
def __init__(self, **kwargs):
Base.__init__(self, **kwargs)
self.stats = RuleStats(rule=self)
id = Column(Integer, autoincrement=True, primary_key=True)
description = Column(String, nullable=False, default='')
# ... more fields
stats = relationship('RuleStats', uselist=False, backref='rule', cascade='all, delete-orphan')
class RuleStats(Base):
__tablename__ = 'rule_stats'
def __init__(self, **kwargs):
Base.__init__(self, **kwargs)
rule_id = Column(Integer, ForeignKey('rules.id'), primary_key=True)
last_updated = Column(DateTime, default=datetime.now, nullable=False)
感謝您的回覆。我想添加一個setter函數,但是我真的很想用SQLAlchemy自動完成此操作。這似乎不太可能在這個時候不掛鉤到'''before_flush''',所以我可能不得不回到這個解決方案。 –