Haikson

[ Everything is possible. Everything takes time. ]

Физическое удаление файла при удалении записи с models.FileField

По умолчанию, к сожалению, Django физически не удаляет файл при удалении записи с FileField и его производными ( потомками ). Сейчас я покажу вам как это делать самим.
class MyFileModel(models.Model):
    file_field_name = FileField(...)

    def delete(self, *args, **kwargs):
        # До удаления записи получаем необходимую информацию
        storage, path = self.file_field_name.storage, self.file_field_name.path
        # Удаляем сначала модель ( объект )
        super(MyFileModel, self).delete(*args, **kwargs)
        # Потом удаляем сам файл
        storage.delete(path)
Вот и всё. Единственное, что это не решает проблему с удалением самого файла без удаления модели. С этим мы разберемся позже.