![](/img/trans.png)
[英]Django deleting a model instance with no more related ForeignKey items in another model?
[英]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()時,將同時為fk
和rm
對象觸發pre_delete
和post_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.