【问题标题】:Django ImageField Override the File Collision CodeDjango ImageField 覆盖文件冲突代码
【发布时间】:2009-09-10 16:55:20
【问题描述】:

我想在一个模型中有 2 个 ImageField。

  1. 是用户上传图片的地方
  2. 我们拥有该图像的副本,但使用相同的文件。

注意:我简化了这两个字段的原因。

当我们以编程方式分配第二个字段时,除了创建新的 ImageField 字段类型之外,还有什么方法可以阻止 ImageField 在文件名中添加 _?

问候

标记

【问题讨论】:

    标签: django django-models


    【解决方案1】:

    您没有为第二个条目使用文件字段是否有充分的理由?听起来您并没有为第二个项目使用图像字段的细节(即管理员验证它是上传时的图像)。如果您出于某种原因在代码中需要它成为图像字段,您可以将其转换为...

    我假设您已在管理界面中将第二个字段设置为隐藏?

    【讨论】:

    • 感谢 Paul,我在管理界面中隐藏了第二个字段。据我所知, FileField 仍然会发生文件名冲突。我需要保持它们相同,但外部团队使用 API 中的第二个字段的字段类型。我会考虑其他选项,再次感谢您的意见!
    【解决方案2】:

    我知道你说“除了创建一个新的 ImageField 类型”,但我想最好的方法就是这样做,以及 FileField 中的 override the get_filename method(其中 @987654327 @ 显然是子类)。

    除此之外,您还可以创建自己的Storage (django.core.files.storage) 子类,在您的模式下,您可以将其作为storage 参数传递给ImageField。您需要在那里覆盖get_valid_name method。需要注意的是,实际的下划线来自get_valid_filename method in django.utils.text

    不过,我真的不知道将 ImageField 子类化以提供必要的功能有什么问题。

    【讨论】:

    • 感谢您的回复!基本上我是想看看是否有可以帮助的配置/参数更改
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-03-20
    • 2017-01-31
    • 1970-01-01
    • 1970-01-01
    • 2014-05-21
    • 2013-05-30
    相关资源
    最近更新 更多