【问题标题】:How to change the filename on uploaded file?如何更改上传文件的文件名?
【发布时间】:2012-05-13 02:09:12
【问题描述】:

我有一个ImageField(),我在其中指定了upload_to 路径。它可以保存到MEDIA_ROOT url。但是我想将上传的文件更改为其他文件名。

我应该从 forms.py 还是从 models.py 执行此操作,还应该覆盖 save 函数来存档吗?

forms.py

class UserAvatarForm(forms.ModelForm):
    class Meta:
        model = UserProfile
        fields = ('avatar',)
    def __init__(self, *args, **kwargs):
        super(UserAvatarForm, self).__init__(*args, **kwargs)

【问题讨论】:

    标签: django


    【解决方案1】:

    直接在ImageField头像的upload_to中自定义。

    通常看起来像

    def upload_to(instance, filename):
        import os.path
        # get extension from raw filename
        fn, ext = os.path.splitext(filename)
        new_filename = ...
        # return new filename, including its parent directories (based on MEDIA_ROOT)
        return "path/{new_filename}{ext}".format(new_filename=new_filename, ext=ext)
    

    您可以在 new_filename 行引入新名称,具体取决于 instance 或 filename 或任何其他有意义的字符串。甚至可以name the file by instance.pk

    【讨论】:

    猜你喜欢
    • 2013-07-10
    • 2016-05-28
    • 2011-02-10
    • 2012-02-02
    • 1970-01-01
    • 2013-03-12
    • 2013-11-07
    • 1970-01-01
    • 2020-06-01
    相关资源
    最近更新 更多