Django-附件垃圾回收

Django-附件垃圾回收,django,Django,我创建了一个将媒体附加到博客帖子的模型: class MediaAttachment(models.Model): media = models.ForeignKey(Media, related_name='attachment') content_type = models.ForeignKey(ContentType) object_id = models.PositiveIntegerField(db_index=True) object = generi

我创建了一个将媒体附加到博客帖子的模型:

class MediaAttachment(models.Model):
    media = models.ForeignKey(Media, related_name='attachment')
    content_type = models.ForeignKey(ContentType)
    object_id = models.PositiveIntegerField(db_index=True)
    object = generic.GenericForeignKey('content_type', 'object_id')
它工作得很好,但是如果我将一些媒体附加到博客条目,然后删除该博客条目,则该条目的附件仍保留在MediaAttachment表中。GC MediaAttachment表的最聪明的方法是什么?信号是最好的方法吗?

信号?没有


只需添加一个
delete
方法来“级联”删除到相关对象。

好的,所以我使用以下方法成功地完成了这项工作

我将此信号添加到我的MediaAttachment模型中:

post_delete.connect(MediaAttachment.objects.delete_attachment)
然后我的delete方法如下所示:

def delete_attachment(self, instance, *args, **kwargs):
    ctype = ContentType.objects.get_for_model(instance)
    return self.filter(content_type=ctype, object_id=instance.pk).delete()

我的问题是,我必须在我的博客模型中覆盖delete方法来删除MediaAttachment模型中的条目。。。我更愿意将所有与MediaAttachment相关的逻辑及其表保存在MediaAttachment模型本身中。理想情况下,博客模型根本不会引用MediaAttachment,而是独立运行。