Django – FileField upload_to 커스텀

목록으로 돌아가기

아래 처럼 함수를 이용하여 업로드 위치를 지정할 수 있다. 실행타임 즉 런타임에 폴더 위치를 변경할 수 있다는 말이다.

그럼 과연 django에는 upload_to를 어떻게 커스텀해서 적용할까?

이하 django filefield 예시

def user_directory_path(instance, filename):
    <em># file will be uploaded to MEDIA_ROOT/user_<id>/<filename></em>
    return 'user_{0}/{1}'.format(instance.user.id, filename)

위와 같이 instance와 filename가 넘어오는데 instance는 model에서 생성된 instance 내용물들을 말한다

그래서 그 내용물의 필드들, 왜래키의 필드들에 접근할 수 있다.

모델에는 다음과 같이 설정한다.

class Content(models.Model):
    name = models.CharField(max_length=200)
    user = models.ForeignKey(User)
    file = models.FileField(upload_to=user_directory_path)

참고자료

https://stackoverflow.com/questions/1190697/django-filefield-with-upload-to-determined-at-runtime

https://mixedprograming.tistory.com/26

author-profile
Written by bj