Как удалить картинки связанные по foreign key с другой моделью
Удаляю модель NewsPost через админ-панель, все работает, но не удаляются связанные с этой моделью картинки NewsPostImages из папки "news/images/%Y/%m/%d", что делать??
from django.db import models
from django_resized import ResizedImageField
class NewsPost(models.Model):
article = models.CharField(max_length=180)
poster = ResizedImageField(upload_to="news/posters/%Y/%m/%d", null=True, blank=True)
news_field = models.TextField()
pub_date = models.DateTimeField('date published')
class NewsPostImage(models.Model):
news_post = models.ForeignKey(NewsPost, on_delete=models.CASCADE, default=None)
image = models.ImageField(upload_to="news/images/%Y/%m/%d", null=True, blank=True)
Ответы (1 шт):
Автор решения: Vadim.Sharoikin
→ Ссылка
Это связанно с тем что картинки не хранятся в самой бд. Там на них хранятся ссылки. И как раз они должны удаляться при использовании on_delete=models.CASCADE.
Предлагаю такое решение данной проблемы. В консоли вводим pip install django-cleanup.
Далее в настройка приложения (файл settings.py)
INSTALLED_APPS = [
...
'django_cleanup',
]
теперь при удалении из NewsPost будут удаляться файлы и в папке , где хранятся картинки. Ссылка на github библиотеки.