0

ImageField()パスを指定した場所がありupload_toます。そしてそれはそれがMEDIA_ROOTURLに保存するように動作します。ただし、アップロードしたファイルを他のファイル名に変更したい。

これはforms.pyまたはmodels.pyから行う必要がありますか?また、保存機能をオーバーライドしてアーカイブする必要がありますか?

forms.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、依存しinstanceたりfilename、意味のある他の文字列に依存したりできます。ファイルに instance.pk という名前を付けることもできます

于 2012-05-03T14:29:55.790 に答える