djangoでは、foreignKeyが設定されているときに関連モデルの変更について通知する方法はありon_delete=models.SET_NULL
ますか?
典型的な状況の最初のシナリオでは:
class RelatedModel(models.Model):
fKey = models.ForeignKey('ForeignModel')
class ForeignModel(models.Model):
name = models.CharField(max_length=128)
fk = ForeignModel.objects.create(name='Test')
rm = RelatedModel()
rm.fKey = fk
rm.save()
fk.delete()
fk.delete() が呼び出されると、pre_delete
andpost_delete
シグナルがfk
andrm
オブジェクトの両方に対してトリガーされます。
ただし、RelatedModel が次のように宣言されている場合:
class RelatedModel(models.Model):
fKey = models.ForeignKey('ForeignModel', null=True, on_delete=SET.NULL)
関連するモデルが変更されたにもかかわらず (fKey
値が null に変更されました)、関連するモデルに対してトリガーされているシグナルが表示されません。トリガーされる唯一のシグナルは、 のプレ/ポスト削除シグナルですfk
。
このような状況を考えると、関連するモデルの変更について通知されon_delete=models.SET_NULL
、カスタム メソッドをまだ使用し、作成していない方法はありますか?