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