DRF: Как установить правильное имя_вида с украшением действия в наборе представлений
У меня есть следующий метод декоратора действия, я притворяюсь, что фильтрую учителей по модели:
@action(detail=True, methods=(['GET']))
def get_teachers_by_area(self, request, pk=None):
teachers = self.get_serializer().Meta.model.objects.get_teachers_by_area(pk=pk)
if teachers:
teacher_serializer = TeacherByAreaListSerializer(teachers, many=True)
return Response(
{
'ok': True,
'conon_data': teacher_serializer.data
},
status=status.HTTP_200_OK
)
else:
return Response(
{
'ok': False,
'detail': 'No se encontró el Área de Conocimiento.'
},
status=status.HTTP_400_BAD_REQUEST
)
Файлы урлов следующие:
Router.py
router = routers.DefaultRouter()
router.register(
r'school-period',
SchoolPeriodViewSet,
basename='school_period'
)
router.register(
r'knowledge-area',
KnowledgeAreaViewSet,
basename='knowledge_area')
urlpatterns = router.urls
Urls.py
path('user/api/', include('applications.users.routers')),
path('school/api/', include('applications.school.routers')),
Далее идет Serializers.py модели:
class KnowledgeAreaSerializer(serializers.HyperlinkedModelSerializer):
teachers = serializers.HyperlinkedRelatedField(
view_name='knowledge_area-detail',
read_only=True,
)
Я просто делаю вид, что возвращаю данные (учителя) как url с помощью декоратора действия, упомянутого ранее:
def to_representation(self, instance):
data = super().to_representation(instance)
return {
'id': instance.id,
'name': instance.name,
'coordinator': {
'id': instance.coordinator.person.id,
'name': instance.coordinator.person.full_name()
},
'sub_coordinator': {
'id': instance.sub_coordinator.person.id,
'name': instance.sub_coordinator.person.full_name()
},
'objective': instance.objective,
'observations': instance.observations,
'teachers': instance.teachers,
'created_at': instance.created_at
}
Но проблема в том, что я не смог указать правильный URL метода действия, я сделал много исследований, но не нашел ничего об этом или с такими же требованиями. Кстати, спасибо за помощь.