@extend_schema(request=ExamAddRequest(), summary="Pass Exam from Recruit")
@action(methods=['post'], detail=True, url_path='exam', url_name='exam-pass')
def pass_exam(self, request: Request, pk: int):
exam = ExamAddRequest(data=request.data).get_from_request()
print(exam)
return Response({'hello': 'world'})url получается таким /api/v1/recruits/{id}/exam
при попытке сделать запрос пишет что такой метод не разрешен
c чем может быть связано такое поведение?
(в классе также присутствует реализованный create на /api/v1/recruits, но не думаю что это должно как-то мешать)
Немного посмотрев внутри DRF обработку viewsets обнаружил, что он почему-то ссылается на другую функцию, в которой только обработка get метода из-за чего кидает исключение про post метод (хотя в апи генераторе нормальные, отдельные ссылки) (немного больше кода с полным view и urls https://dpaste.org/c86P) может кто уже сталкивался с таким? может я неправильно использую @action, DRF Routers и/или GenericViewSet?
Ну вообще я бы миксины добавил, а не экшены
Обсуждают сегодня