2012-08-31 45 views
3

我试图在this tutorial之后实现一个活动馈送。Django删除GenericForeignKey

当相应的对象(即注释本身)已被删除时,我想删除一个活动性(即已添加注释)。这似乎没有级联。

有没有办法在不添加GenericRelation的情况下实现这一点?可以使用postdelete信号删除相应的活动。这是最好的方法吗?

回答

1

是的,你可以,但使用pre_delete signal可能会更好,因为你可以访问实例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()