私がモデルを持っているが変更されたときにメソッド保存モデルをカスタマイズする方法、のは保存でき、定義は以下の通りである:このモデルでは、A、BのDjangoは - 指定したフィールドが
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
と、いくつかのオブジェクトインスタンス、c、d。階層は親フィールドで表されます。
a
|-- b
|-- c
|-- d
だから、私は何をする必要があることは、ときb.enabled
True
からFalse
からの変更、またはその逆に、私は値にc.enabled
とd.enabled
を更新する必要がありますされていますb.enabled
。
つまり、親のenabled
フィールドが変更されたときに子インスタンスに変更をブロードキャストする必要があります。
パフォーマンスを考慮すると、enabled
フィールドが実際に変更されたときにのみ変更をブロードキャストする必要があります。また、親が保存されているときは常に、子インスタンスを更新する必要はありません。フィールド1またはフィールド2のみを更新します。
だから誰も知っている、このロジックを実装する最良の方法は何ですか?前もって感謝します。
これは、変更をキャプチャする別の方法ですが、オブジェクトが保存されているときはいつでもオブジェクトを照会する必要があります。 – Enix
いいえ、djangoシグナルでは、(この場合は)chage_statusメソッドを1つの関数(このシグナル内)でのみ実装します.A.save()を実行するたびに関数が呼び出され、同じどのような状況でも状況を変更するプロセスがあり、それがプロセスです。それは理解できません。誰が理解できないのですか? –