ProjectCreateSerializer로 Project를 생성할 때, text를 받아서 문장 단위로 분리하고, Sentence가 존재하는지 확인하고, 존재하지 않는다면 create_audio_file을 통해 음성 파일을 생성. 이후 생성한 Sentence와 Project를 연결하여 Audio를 생성.
AudioSerializer로 Audio를 수정할 때, text가 변경되었다면 Sentence를 생성하고, create_audio_file을 통해 음성 파일을 생성. 이후 Audio의 speed를 변경하고 저장.
AudioPagination을 통해 page_size를 10으로 설정.
Project의 pk를 받아서 Audio를 index 순으로 정렬하여 반환하는 ProjectView를 생성.
3️⃣ Today I Learned
Pagination
데이터를 여러 페이지에 나눠 보여주는 기능이다.
DRF에서는 rest_framework.pagination에서 제공하는 PageNumberPagination을 그대로 사용하거나, 상속받아 원하는 대로 변경하여 사용할 수 있다. config.settings.py에서 DEFAULT_PAGINATION_CLASS를 설정하여 전역으로 사용할 수 있다.
ViewSet에서 pagination_class를 설정하여 해당 ViewSet에서만 사용할 수 있다.
APIView에서는 좀더 설정이 필요하다. APIView에서 pagination_class를 설정하고, paginate_queryset를 통해 queryset을 paginator에 넘겨주고, get_paginated_response를 통해 Response를 반환한다.
내 경우는 커스텀이 필요해서 다음과 같은 방식을 사용했다.