gpt4 book ai didi

django - Django 存储系统的差异

转载 作者:行者123 更新时间:2023-12-04 05:27:09 27 4
gpt4 key购买 nike

我有一个 Django 应用程序,它使用 FileSystemStorage 进行开发,使用 S3BotoStorage 进行暂存和生产。一切正常。我注意到这些系统之间存在一些小的差异:

  • FileSystemStorage 会将 MEDIA_ROOT 值附加到它的任何文件
    节省。 S3BotoStorage 默认不会。
  • 如果我删除带有 FileField 的模型实例,S3BotoStorage 将
    删除 FileField 的文件和文件所在的目录,如果
    file 是该目录中的唯一文件。 FileSystemStorage 不会
    删除空目录。

  • 我可以解决这些差异,但它们会向我的代码添加条件。第一个是最简单的——我只是用 location=MEDIA_ROOT 初始化了 S3BotoStorage 类。 .有没有办法以类似的方式处理第二个?我可以配置任一存储类的目录删除行为吗?我应该覆盖 FileSystemStorage 的删除方法吗?

    最佳答案

    FileSystemStorage.delete的代码(第 144 行)没有我可以看到的任何配置:

    def delete(self, name):
    name = self.path(name)
    # If the file exists, delete it from the filesystem.
    # Note that there is a race between os.path.exists and os.remove:
    # if os.remove fails with ENOENT, the file was removed
    # concurrently, and we can continue normally.
    if os.path.exists(name):
    try:
    os.remove(name)
    except OSError as e:
    if e.errno != errno.ENOENT:
    raise

    所以,是的,最简单和最干净的方法可能是覆盖其删除方法以额外检查空目录的情况。

    关于django - Django 存储系统的差异,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13074193/

    27 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com