Django - 更新模型不会删除旧的FileField

Rau*_*.H. 6 django admin backend filefield

我正在用django实现一个应用程序,它有一个带有FileField的模型:

class Slideshow(models.Model):
    name = models.CharField(max_length=30,unique=True)
    thumbnail = models.FileField(max_length=1000,upload_to="images/app/slideshows/thumbnails")
Run Code Online (Sandbox Code Playgroud)

我有一个管理员后端,django管理模型.我刚刚添加了文件admin.py,django为我管理了一切

from django.contrib import admin

from apps.gallery.models import Slideshow

admin.site.register(Slideshow)
Run Code Online (Sandbox Code Playgroud)

在后端,可以添加,删除和更新幻灯片.但是,当我尝试更新幻灯片并更改其属性缩略图[FileField]时,django不会删除旧文件.因此,在多次更新之后,服务器充满了许多无用的文件.我的问题是:如何让django在更新后自动删除这些文件?

我将衷心感谢您的帮助

Set*_*eth 1

我确信 Django 是有意这样做的。例如,它无法知道是否有其他模型正在使用该文件。如果您希望该文件保留下来并发现 django 删除了它,您也会感到非常惊讶!

但是,还存在一个问题,即一旦更改文件字段,旧文件名就会丢失。

有一个关于该问题的开放票证:http://code.djangoproject.com/ticket/11663

http://code.djangoproject.com/ticket/2983中有一个补丁,它展示了如何覆盖__set__以存储以前的文件名。然后你的模型的__save__方法可以访问以前的文件名来删除它。