작성
·
236
0
video = models.FileField(upload_to='videos/%Y/%m/%d', null=True, blank=True)
답변 1
0
안녕하세요.
값이 없다면 null로서 응답을 주는 것이 보다 정확한 API 응답입니다. 임의의 어떤 값으로 지정을 하실려는 것인지는 모르겠으나, 그리 좋은 접근은 아닙니다.
조회 요청에서 video 필드의 값을 표현할 때, null이 아니라 임의의 문자열로 응답을 하고자 하시는 것인지요?
일단 지금 생각나는 방법은 Serializer와 각 Serializer Field에서는 to_representation 메서드가 있습니다. 이는 Serializer가 만들어낸 최종 primitive 데이터입니다. 이를 Response를 통해 응답에 활용됩니다. to_representation 메서드를 오버라이드하셔서 특정 field의 값이 None일 때, 다른 값으로 변경해보실 수 있습니다. // 디버거를 통해 data 값 내역도 꼭 확인해보세요.
---
그리고 models.FileField/ImageField를 통해 파일이 저장되셨다면, 저장 시점에 upload_to 인자를 통해 저장 경로를 계산해서 저장하게 됩니다. 이미 저장된 파일에 대해서는 upload_to 인자를 수정하는 것은 영향을 끼치지 않습니다. 지정 경로에 다시 저장코자한다면, 다시 save 과정을 거쳐야 합니다. // 필드명.url 만으로 hostname을 제외한 절대경로 URL이 계산이 됩니다.
---
화이팅입니다. :-)