我有 Event 类和 Participant 类,它们具有 Event 的外键。在事件中我有:
model_changed_stamp = models.DateTimeField()
许多参与者甚至参加了一场。
当 Event 类的任何实例发生更改或正在创建新实例时,我希望model_changed_stamp
更新 in 的值。事实上,我还有很多其他类,比如 Building,它们也有 Event 的外键,我也想跟踪变化。
我想出了在Event
. 我试过了:
def model_changed(self):
value = getattr(self, 'model_changed_stamp')
value = datetime.now()
setattr(self, 'model_changed_stamp', value)
然后在参与者的 save() 或我想开火的建筑物中self.event.model_changed()
我想知道怎么做。我应该使用信号吗?
更新0:根据一些阅读(例如Django的两勺),使用信号对于这种情况来说是一种过度杀伤力。
更新 1:在我尝试的方法中,按照Daniel Roseman在 Participant 类中的建议:save(self)
def save(self):
if self.id is None:
self.event.model_changed()
在Event
我定义model_changed
如下:
def model_changed(self):
self.model_changed_stamp = datetime.now()
self.save()
而且它不工作 - 不更新日期,它应该什么时候创建新参与者。
更新2:工作!!!;-)
添加后:self.save()
作为model_changed
方法中的最后一行。