반응형
[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())
[참고]
반응형
'Python > Django' 카테고리의 다른 글
[Django] Apache + Virtualenv 배포하는 방법 (0) | 2019.09.04 |
---|---|
[Django] Debug Toolbar 설치하기 (0) | 2019.08.28 |
[Django] django_mysql Warnings 해결 방법 (0) | 2019.08.16 |
[Django] Ajax로 다차원 배열, Json안에 Json 등 중첩된 구조의 데이터 전송하는 방법 (0) | 2019.08.15 |
[Django] npm으로 설치한 패키지 사용하는 방법(node_modules) (3) | 2019.08.14 |