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,而是独立运行。