Как заставить Django Admin удалять файлы при удалении объекта из базы данных / модели? - PullRequest
81 голосов
/ 21 марта 2011

Я использую 1.2.5 со стандартным ImageField и использую встроенную систему хранения. Файлы загружаются нормально, но когда я удаляю запись от администратора, реальный файл на сервере не удаляется.

Ответы [ 12 ]

0 голосов
/ 27 марта 2013

убедитесь, что вы пишете « self » перед файлом.поэтому приведенный выше пример должен быть

def delete(self, *args, **kwargs):
        self.somefile.delete()

        super(MyModel, self).delete(*args, **kwargs)

Я забыл «self» перед моим файлом, и оно не сработало, так как оно выглядело в глобальном пространстве имен.

0 голосов
/ 18 февраля 2013

У меня может быть особый случай, так как я использую опцию upload_to в своем файловом поле с динамическими именами каталогов, но я нашел решение использовать os.rmdir.

В моделях:

import os

...

class Some_Model(models.Model):
     save_path = models.CharField(max_length=50)
     ...
     def delete(self, *args,**kwargs):
          os.rmdir(os.path.join(settings.MEDIA_ROOT, self.save_path)
          super(Some_Model,self).delete(*args, **kwargs)
...