【问题标题】:Django Deleting a GenericForeignKeyDjango 删除 GenericForeignKey
【发布时间】:2012-08-31 11:39:41
【问题描述】:

我正在尝试在this tutorial 之后实施活动提要。

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

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

【问题讨论】:

    标签: django generic-foreign-key generic-relations


    【解决方案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()
    

    【讨论】:

      猜你喜欢
      • 2014-04-09
      • 2012-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-01-18
      • 1970-01-01
      • 2012-12-04
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多