【发布时间】:2021-09-01 05:04:20
【问题描述】:
例如,我有一个模型
class ModelA(models.Model):
name = models.CharField()
class ModelB(models.Model):
last_modified_time = models.DateTimeField()
as = models.ManyToManyField('ModelA')
当我删除 ModelA 的实例时,我还想更新所有引用 ModelA 的 ModelB 实例上的 last_modified_time 字段。我可以为此使用预删除信号,即
def pre_delete_handler(sender=None, instance=None, *args, **kwargs):
# update all using instance.modelbs...
models.signals.pre_delete.connect(pre_delete_handler, sender=ModelA)
但是每次新模型通过 ManyToMany 引用它时,这段代码都需要更新,从维护的角度来看,这并不是最好的。我正在寻找一种方法来枚举 ModelA 引用的所有模型,这样我就可以进行一个涵盖所有情况的更新,但无法找出最好的方法。枚举与 ModelA 相关的所有对象的正确方法是什么?
【问题讨论】:
标签: django django-models django-queryset