Django - Сборка мусора вложения - PullRequest
0 голосов
/ 03 февраля 2011

Я создал модель, которая прикрепляет медиа к сообщениям в блоге:

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.Какой самый разумный способ собрать таблицы MediaAttachment?Является ли сигналы лучшим способом сделать это?

Ответы [ 2 ]

1 голос
/ 03 февраля 2011

Сигналы?

http://docs.djangoproject.com/en/1.2/ref/models/instances/#deleting-objects

Просто добавьте метод delete для "каскадного" удаления связанных объектов.

0 голосов
/ 03 февраля 2011

Хорошо, так что мне удалось сделать это хорошо, используя следующий метод.

Я добавил этот сигнал в свою модель MediaAttachment:

post_delete.connect(MediaAttachment.objects.delete_attachment)

Тогда мой метод удаления выглядит так:

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()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...