Django删除未使用的媒体文件

Fab*_*o A 19 python django django-admin

我有一个django项目,管理员可以在其中上传媒体.当项目出售时,它们将从站点中删除,从而删除它们在MySQL数据库中的条目.但是,与项目关联的图像仍保留在文件系统上.这不是必然的坏行为 - 我不介意保留文件,以防删除是一个意外.我想到的问题是两年后,由于媒体文件夹因旧产品图像而膨胀,存储空间有限.

有没有人知道一种系统/程序化的方法来对所有图像进行排序并将它们与相关的MySQL字段进行比较,删除任何与文件系统不匹配的图像?在完美的世界中,我想象一下django-admin中的一个按钮,如"清理未使用的媒体",它执行一个能够执行此行为的python脚本.我会在这里分享我最终的解决方案,但我现在正在寻找的是那些有想法,知道资源或者自己在某些方面做过这件事的人.

un1*_*n1t 29

尝试django-cleanup,当你删除模型时,它会自动调用FileField上的delete方法.

pip install django-cleanup
Run Code Online (Sandbox Code Playgroud)

settings.py

INSTALLED_APPS = (
     ...
    'django_cleanup', # should go after your apps
)
Run Code Online (Sandbox Code Playgroud)


And*_*kov 8

django-unused-media将帮助您通过管理命令清除旧的未使用的媒体.

刚刚开始使用django-cleanup并且已经有需要删除的文件时非常有用.或者,如果您有需要从媒体目录中删除的缩略图.