2019年10月18日金曜日

Django FileField/ImageField でアップロードした同一名のファイルを上書きするようにする

その名前のファイルが既に存在するときにDjangoがファイル名を変更しないようにするにはどうすればいいですか? - コードログ
https://codeday.me/jp/qa/20190329/495576.html

上記コードでは get_available_name() got an unexpected keyword argument 'max_length' というエラーが出たので以下を参考に少し改良しました。

django get_available_name() got an unexpected keyword argument 'max_length'

models.py に Class OverwriteStorage()とfs=・・・を追加して、
ImageField()内に storage=fs を追記します。

import os
from django.conf import settings
from django.core.files.storage
import FileSystemStorage

class OverwriteStorage(FileSystemStorage): 
     def get_available_name(selfname): 
         if self.exists(name): os.remove(os.path.join(settings.MEDIA_ROOT, name)) 
         return name

fs = OverwriteStorage(location=settings.MEDIA_ROOT)

class YourModel(models.Model): 
image_file = models.ImageField(upload_to='image/'storage=fs)

0 件のコメント:

コメントを投稿