3

このチュートリアルに従って、アクティビティ フィードを実装しようとしています。

対応するオブジェクト、つまりコメント自体が削除されたときに、アクティビティ (つまり、コメントが追加された) を削除したいと考えています。これはカスケードしていないようです。

GenericRelation を追加せずにこれを達成する方法はありますか? postdelete シグナルを使用して、対応するアクティビティを削除することができます。それが最善の方法ですか?

4

1 に答える 1

1

はい、できますが、インスタンス pk にアクセスできるため、 pre_delete シグナルを使用する方がよいかもしれません。

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-05-14T14:02:27.167 に答える