Django:将所有以前上传的媒体文件移动到新位置并重命名

2024-02-11

所以,我正在使用 Django (1.10),并且我有数百个上传的(媒体)文件。我想移动并重命名所有文件,因为我想稍微更改文件夹结构。

在我的 models.py 中,我确实有一个完美工作的 save() 方法,可以将文件保存在正确的位置,但它只适用于新文件。我想移动所有已经存在的文件。

我希望通过对所有对象调用 save 方法,它会自动移动并重命名文件,但这没有做任何事情(就像我预期的那样)。

是否有捷径可寻?我有一种感觉,我忽略了一个非常直接的解决方案......


好的,您必须在这里编写一些脚本。您可以在此处使用 django-extensions。https://github.com/django-extensions/django-extensions https://github.com/django-extensions/django-extensions您可以在您的项目中进行相同的设置 假设你的模型File

写个脚本吧migrate_media_files.py

import os
from django.conf import settings
from shutil import copyfile


def run():
    base_dir = settings.BASE_DIR
    media_dir = os.path.join(base_dir,'project_name/media')

    for file in Files.objects.all():
        old_file_path = os.path.join(media_dir, file.image.name)
        dir_name = '/{}-{}/{}-{}/'.format(file.theme,file.name,file.id, file.name)
        if not os.path.exists(os.path.join(media_dir, dir_name)):
            os.makedirs(os.path.join(media_dir, dir_name))
        new_file_name = '/{}-{}/{}-{}/{}-{}.txt'.format(file.theme,file.name,file.id, file.name, file.id, file.name)
        new_file_path = os.path.join(media_dir, new_file_name)
        copyfile(old_file_path, new_file_path)
        file.image.url = new_file_name
        file.save()

跑步 :

python manage.py runscript migrate_file

该脚本主要处理文件和对象。您可能需要更改和测试。一切顺利。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Django:将所有以前上传的媒体文件移动到新位置并重命名 的相关文章

随机推荐

  • 如何使用 jQuery 将一个 HTML 块替换为另一个 HTML 块

    我想替换以下 html 块 table class t12PageBody cellpadding 0 cellspacing 0 width 100 tr td REGION POSITION 01 td tr table table w
  • 更新插入交易

    我将 Spring 与 PostgreSQL 结合使用 并尝试使用如下代码执行某种 UPSERT jt update delete from A where id 1 jt update insert into A id value val
  • 解析文本区域中的换行符而不允许所有 html 标签

    我有一个文本区域字段 用户可以在其中输入内容 当涉及到在页面上显示他们的条目时 rails 返回 n对于每个换行符 在页面上的 html 中显示为根本没有换行符 据我所知 解决这个问题的标准方法是 gsub命令 替换 n with br 然
  • C# 如何注销 Citrix XenApp 用户会话?

    由于 Citrix 关于其 SDK 的文档绝对为零 因此我在此记录这一点 使用 C 如何以编程方式注销用户会话 使用下面的简单方法通过解析会话并注销单个会话来注销用户会话 using Citrix Common Sdk using Citr
  • Qt/Qml 和方法重载

    刚刚在 Qml 中调用重载的 C 方法时遇到了 Qt 框架的奇怪行为 并试图了解其背后的原因 假设我有一个QList
  • 带星号参数和不带星号参数的调用函数的区别

    我知道 Python 函数定义中星号的含义 不过 我经常看到星号用于调用带有如下参数的函数 def foo args kwargs first func args kwargs second func args kwargs 第一个和第二个
  • 可可印刷

    我已经制作了一个非常适合 A4 页面的视图 现在我想打印它 请注意 我没有使用drawRect或类似的东西 只是一个带有子视图和文本标签的普通视图 我的问题是 我对该视图有一些视图 我使用图层在项目周围放置背景颜色和圆角矩形 子视图不会打印
  • JavaScript 依赖列表

    我有一个需要找出依赖关系的元素列表 I have a b d d c e a取决于b and d and d on c and e 有没有一种方法可以巧妙地构建依赖关系 输出应该 可能 是 b c e d a 克里斯蒂安 假设您想要一个元素
  • 在shell脚本中设置环境变量/在Java程序中访问

    我想在Ubuntu 10 04中使用shell脚本设置环境并想在java程序中访问 我写了这样的shell脚本 bin sh export JAVA home ubuntu echo Variable JAVA 我的java程序是 impo
  • .NET Threadpool工作线程和异步IO线程

    好的 据我了解 NET 线程池维护着许多后台线程 准备用于某种任务 Get SetMinThreads 和 Get SetMaxThreads 方法包含两个可以返回或调整的参数 根据MSDN http msdn microsoft com
  • ASP.net MVC 3 - 在 OnActionExecuting 中获取发布的 JSON 数据

    我使用 jquery 中的 ajax 方法将数据发布到 actin 并使用数据字段传递 JSON 字符串化值来指定要发布的数据 这些已发布到操作 但我无法将它们放入 OnActionExecuting 操作过滤器中 它们不是 Forms 或
  • Android Studio Kotlin 出现 dataSnapshot.getValue 错误

    我在最近的项目中将 java 文件转换为 kotlin 文件 问题是我遇到了以下代码错误 val map dataSnapshot getValue
  • Tensorflow 神经网络预测始终相同

    我有一个深度 CNN 可以预测 3d 图像中每个像素的 0 和 2 之间的标签 我已经在每个像素都标记为 1 的图像上训练了模型 因此 在测试模型时 我相信每个预测都应该是 1 相反 模型仅预测 0 这是整个模型的存储库 https git
  • 如何处理 Elasticsearch 中的重复数据?

    我已经使用父子映射来规范化数据 但据我所知 无法从 parent 文档获取任何字段 这是我的索引的映射 mappings building properties name type string flat parent type build
  • 用于连接多个表并在单行中获取逗号分隔值的 LINQ 查询

    我有下表的值 Account Id Name Email 101 Nasir Uddin email protected cdn cgi l email protection Role Id Title 101 Admin 102 Oper
  • C# - 以编程方式打开和关闭 Excel 文件的正确方法

    我似乎找不到打开和关闭 Excel 文件的正确方法 这是我必须打开的文件 我发现它过于复杂 Microsoft Office Interop Excel Application excelApp new Microsoft Office I
  • 对于 Part 类型,方法 getSubscribedFileName() 未定义

    我正在尝试在 servlet 3 0 gt 中上传多个文件 我在 getSubmissedFileName 方法中收到错误 为什么我会收到此错误 protected void doPost HttpServletRequest reques
  • 最少数量比较找出 3 个数字的中位数

    我正在实施快速排序 我希望将枢轴设置为中位数或三个数字 这三个数字分别是第一个元素 中间元素和最后一个元素 我能找到更少的中位数吗 比较 median int a int p int r int m p r 2 if a p lt a m
  • WSL2使用“localhost”访问Windows服务

    我在 Windows 10 上使用 WSL2 我的开发堆栈在主机操作系统上使用本地网络服务器 localwp 或 wamp 我使用 WSL2 作为主终端 SSH Git SASS 自动化工具 我需要的是一种使用服务器名称而不是随机 IP 地
  • Django:将所有以前上传的媒体文件移动到新位置并重命名

    所以 我正在使用 Django 1 10 并且我有数百个上传的 媒体 文件 我想移动并重命名所有文件 因为我想稍微更改文件夹结构 在我的 models py 中 我确实有一个完美工作的 save 方法 可以将文件保存在正确的位置 但它只适用