@AlexMine
Учусь

Как удалить все файлы привязанные к модели?

Подскажите как удалить объявление и все к нему привязанные фотографии?

Вот модели
class Advert(models.Model):
    user = models.CharField(max_length=100, blank=True)
    city = models.CharField(max_length=30)
    ad_type = models.CharField(max_length=30)
    category = models.TextField()
    title = models.CharField(max_length=64)
    sex = models.CharField(max_length=7)
    description = models.CharField(max_length=2000)

class AdvertPhoto(models.Model):
    advert = models.ForeignKey('Advert')
    photo = models.ImageField(upload_to='')
    preview = models.BooleanField(default=False)

    def __str__(self):
        return str(self.advert)
  • Вопрос задан
  • 440 просмотров
Решения вопроса 1
sergey-gornostaev
@sergey-gornostaev Куратор тега Django
Седой и строгий
Масса вариантов. Например:

Вариант №1 - Правильное удаление файла при удалении экземпляра модели:
from django.db.models.signals import pre_delete
from django.dispatch.dispatcher import receiver
@receiver(pre_delete, sender=AdvertPhoto)
def advert_photo_delete(sender, instance, **kwargs):
    instance.file.delete(False)


Вариант №2 - Тупое удаление всех файлов:
import os
for instance in AdvertPhoto.objects.all():
    os.remove(instance.photo.path)


А чего именно нужно добиться?
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы