2013-07-09 5 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

instance은 여기에 Contact 개체입니다. 그래서, 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()