@rekursy

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

Добрый день, сделал модельку Django, которая сохраняет фотографии продуктов в отдельную папочку с именем продукта, причём фотографий можно добавлять несколько.

Столкнулся с проблемой, что при удалении объекта, сами файлы фотографий не удаляются, поэтому написал такой сигнал, чтобы при удалении объекта он срабатывал и удалял объекты в папке media с именем продукта.

@receiver(pre_delete, sender=Photo)
def update_cart(sender, instance, **kwargs):
    path = os.path.join(os.path.abspath(os.path.dirname('media')), os.path.join('media', f'product_{instance.product.product_name}'))
    shutil.rmtree(path)


Мой вопрос такой, насколько такой подход можно использовать и создаст ли он какие-то проблемы при развёртывании этого проекта на сервере или это вообще "колхоз"

дополнительно:
class Photo(models.Model):
    product = models.ForeignKey(Product, on_delete=models.CASCADE)
    photo = models.ImageField(upload_to=user_directory_path)

Я знаю, что можно использовать поле своей модели instance.photo.delete(), но это удаляет только один экземпляр фото, а у меня к модели товара через ForeignKey привязаны фотографии. Что-то вроде галереи
  • Вопрос задан
  • 229 просмотров
Пригласить эксперта
Ваш ответ на вопрос

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

Похожие вопросы