Python/Django
[Django] FileField/ImageField 파일 생성시 Overwrite하는 방법
S0PH1A
2019. 8. 19. 10:41
반응형
[Django] FileField/ImageField 파일 생성시 Overwrite하는 방법
Django ORM에서 파일 생성시 같은 이름이 이미 존재하는 경우 오버라이트(overwirte)하는 방법이다.
(기본적으로 이름이 이미 존재하는 경우 이름 뒤에 랜덤문자열을 붙여 unique한 이름이 생성된다.)
- django file storage
- 파일을 파일 저장 시스템에 저장하는 방법과 위치에 대한 결정.
- 파일 시스템, 파일 열기 및 읽기 등과 같은 것을 실제로 이해하는 객체입니다.
이미 같은 이름이 존재하는 경우 이전 파일을 제거해주는 OverwriteStorage 클래스 생성한 후 field의 storage 옵션에 넣어준다.
# models.py
from django.db import models
from django.conf import settings
from django.core.files.storage import FileSystemStorage
class OverwriteStorage(FileSystemStorage):
'''
file 같은 이름 존재할 경우 overwrite
'''
def get_available_name(self, name, max_length=None):
if self.exists(name):
os.remove(os.path.join(settings.MEDIA_ROOT, name))
return name
class User(Model):
# ...
image = models.ImageField(
upload_to='static', storage=OverwriteStorage())
[참고]
반응형