我有一个django项目,管理员可以上传媒体.当物品售出时,它们会从网站上删除,从而删除MySQL数据库中的条目.但是,与项目关联的图像仍保留在文件系统中.这并不一定是不好的行为——我不介意保留文件,以防删除是一个意外.我所看到的问题是两年后,存储空间有限,因为媒体文件夹中堆满了旧的产品图片.

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

推荐答案

try django-cleanup,当您删除模型时,它会自动调用FileField上的删除方法.

pip install django-cleanup

settings.py

INSTALLED_APPS = (
     ...
    'django_cleanup.apps.CleanupConfig', # should go after your apps
)

Django相关问答推荐

使用FormWizard将信息从视图传递到表单

如何在Django中获取标记<;输入>;的';值';属性?

如何从Django';S模型中的方法中检索值?

带有变量键的 Django 模板括号表示法不起作用

使用自定义的AuthBackend时,无法使用request.user.is_authenticated或@login_required修饰符

如何在 Fargate 容器中运行的 Django 中使用 AWS SES?

为什么 timezone.now 在作为默认值应用于 Django 中的 DateField 时显示future 日期

django 创建多种类型用户的最佳方法

Django:在模板中呈现表单字段时添加 CSS 类

django-rest-framework 如何使模型序列化器字段成为必需

直接在模型类上使用 Django 管理器与静态方法

如何在 PyCharm 中重命名 Django 元素?

Django App 配置不当 - 应用程序模块有多个文件系统位置

Django模型字段按变量

整数的Python正则表达式?

如何在 Django 中测试自定义模板标签?

如何向所有 Django 响应添加 HTTP 标头

用于创建和更新的基于 Django 类的视图

ModelForm 上的 Django 和字段集

何时使用 Django get_absolute_url() 方法?