0

我有一个ImageField()我指定upload_to路径的地方。它可以保存到MEDIA_ROOT网址。但是我想将上传的文件更改为其他文件名。

我应该从 forms.py 还是从 models.py 执行此操作,还应该覆盖保存功能以存档吗?

表格.py

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

1 回答 1

3

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

通常它看起来像

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,取决于instancefilename任何其他有意义的字符串。甚至可以通过 instance.pk 命名文件

于 2012-05-03T14:29:55.790 回答