2012-09-14 44 views
1

在django中,當外鍵設置爲on_delete=models.SET_NULL時,有沒有什麼方法可以用信號通知相關模型的變化?在django中刪除外鍵時在相關模型上發信號

與典型的情況第一種情況:

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_deletepost_delete信號將被觸發兩個fkrm對象。

然而,如果該RelatedModel聲明爲:

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

我沒有看到被觸發對相關模型的任何信號,即使它已經改變(在fKey值更改爲空) 。觸發的唯一信號是fk的前/後刪除信號。

鑑於這種情況,是否有任何方法可以用信號通知相關模型的變化,並仍然使用on_delete=models.SET_NULL而不是編寫自定義方法?

回答

0

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