【发布时间】:2017-02-23 09:23:06
【问题描述】:
我有一个模型,我们保存A,定义如下:
class A(models.Model):
name = models.CharField('name', max_length=10)
enabled = models.BooleanField('enabled', default=False)
field1 = models.CharField('field1', max_length=10)
field2 = models.CharField('field2', max_length=10)
field3 = models.CharField('field3', max_length=10)
parent = models.ForeignKey('self', null=True, blank=True) # hierarchy
和这个模型的一些对象实例,a,b,c,d。层次结构由父字段表示。
a
|-- b
|-- c
|-- d
所以,我需要做的是,当b.enabled 从False 更改为True,或反之亦然时,我需要将c.enabled 和d.enabled 更新为值:b.enabled。
也就是说,当父级的enabled 字段发生更改时,我需要将更改广播给子级实例。
出于性能考虑,我只需要在enabled 字段真正更改时才广播更改。并且不希望在保存父级时总是更新子实例,例如只更新 field1 或 field2。
那么,有谁知道,实现这个逻辑的最佳方式是什么?提前致谢。
【问题讨论】: