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信号将同时被触发fkrm对象。

但是,如果 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 只是一个可调用的,带有一些参数。因此,您可以定义自己的 SIGNALING_SET_NULL 并发送您选择的信号。

于 2012-09-14T09:18:13.470 回答