2012-08-31 2 views
3

this tutorial 다음에 작업 피드를 구현하려고합니다.Django GenericForeignKey 삭제

해당 개체 (예 : 주석 자체)가 제거 된 경우 활력을 삭제하고 싶습니다 (예 : 덧글이 추가되었습니다). 이것은 계단식으로 보이지 않습니다.

GenericRelation을 추가하지 않고이를 수행 할 수있는 방법이 있습니까? postdelete 신호를 사용하여 해당 활동을 삭제할 수 있습니다. 그게 최선의 방법인가요?

답변

1

예, 가능하지만을 사용하면 인스턴스 pk에 액세스 할 수 있기 때문에 더 좋습니다.

from django.contrib.contenttypes.models import ContentType 
from django.db.models.signals import pre_delete 
from django.dispatch import receiver 

from yourapp.models import Comment, Activity 

@receiver(pre_delete, sender=Comment) 
def pre_delete_receiver(sender, instance,**kwargs): 
    # code that delete the related objects 
    # As you don't have generic relation you should manually 
    # find related actitities 
    ctype = ContentType.objects.get_for_model(instance) 
    Activity.objects.filter(content_type=ctype, object_id=instance.pk).delete()