簡體   English   中英

在Django中刪除ForeignKey時發出有關模型的信號

[英]Signaling on related model when deleting ForeignKey in django

在django中,當使用on_delete=models.SET_NULL設置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()時,將同時為fkrm對象觸發pre_deletepost_delete信號。

但是,如果RelatedModel聲明為:

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

我沒有看到相關模型觸發的任何信號,即使它已更改( fKey值已更改為null)。 觸發的唯一信號是fk刪除前/刪除信號。

在這種情況下,是否有任何方法可以通知有關模型的更改,並且仍然使用on_delete=models.SET_NULL而不編寫自定義方法?

SET_NULL只是一個可調用對象,帶有一些參數。 因此,您可以定義自己的SIGNALING_SET_NULL並發送您選擇的信號。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM