2013-07-09 42 views
1

我想刪除所有屬於的通用外鍵關係聯繫人刪除所述聯繫人時。pre_delete信號錯誤

這是我到目前爲止已經試過:

@receiver(pre_delete, sender=Contact): 

    def contact_delete(sender, instance, **kwargs): 
     from unsubscribe.models import Unsubscribe 
     unsubscribe_list = Unsubscribe.objects.filter(object_id=instance) 

     for item in unsubscribe_list: 
      item.delete() 

我的問題是,如何獲取該實例的OBJECT_ID。我只想刪除正在刪除的對象的相關項目?

+0

你試過'instance.pk'嗎? –

回答

1

instanceContact這裏的對象。所以,instance.id會給你的聯繫人對象的ID

from django.db.models.signals import pre_delete 
from django.dispatch import receiver 

@receiver(pre_delete, sender=Contact, dispatch_uid='<whatever>') 
def contact_delete(sender, instance, using, **kwargs): 
    from unsubscribe.models import Unsubscribe 
    unsubscribe_list = Unsubscribe.objects.filter(object_id=instance.id, content_type__model='contact') 

    for item in unsubscribe_list: #This should be a single element in the queryset. 
     item.delete()