3

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_deleteandpost_deleteシグナルがfkandrmオブジェクトの両方に対してトリガーされます。

ただし、RelatedModel が次のように宣言されている場合:

class RelatedModel(models.Model):
    fKey = models.ForeignKey('ForeignModel', null=True, on_delete=SET.NULL)

関連するモデルが変更されたにもかかわらず (fKey値が null に変更されました)、関連するモデルに対してトリガーされているシグナルが表示されません。トリガーされる唯一のシグナルは、 のプレ/ポスト削除シグナルですfk

このような状況を考えると、関連するモデルの変更について通知されon_delete=models.SET_NULL、カスタム メソッドをまだ使用し、作成していない方法はありますか?

4

1 に答える 1

0

SET_NULL は単なる callable であり、いくつかの引数を取ります。したがって、独自の SIGNALING_SET_NULL を定義して、選択したシグナルを送信できます。

于 2012-09-14T09:18:13.470 に答える