Получение ошибки при настройке HyperlinkedModelSerializer

Я продолжаю получать ошибку Could not resolve URL for hyperlinked relationship using view name "departments-api". You may have failed to include the related model in your API, or incorrectly configured the "lookup_field" attribute on this field.

Я пытаюсь связать это, но не уверен, где я ошибаюсь. Я могу попасть на страницу '/api/', но не могу нажать ни на одну из ссылок, чтобы перейти на соответствующую страницу. Я полагаю, что мне нужно изменить поле hyperlinkedidentityfield моего сериализатора или функцию api_root, но не уверен, с чего начать.

Models.py

   class Department(models.Model):
    name = models.CharField(max_length=300)

    def __str__(self):
        return self.name


class Teacher(models.Model):
    name = models.CharField(max_length=300)
    # delete dept == delete teacher
    department = models.ForeignKey(Department, on_delete=models.CASCADE)
    tenure = models.BooleanField()

    def __str__(self):
        return f'{self.name} teaches {self.department}'


    def get_absolute_url(self):
        return reverse('teacher-detail', kwargs={'pk': self.pk})

serializers.py

class TeacherSerializer(serializers.HyperlinkedModelSerializer):
    url = serializers.HyperlinkedIdentityField(view_name="teachers-api")

    class Meta:
        model = Teacher
        fields = '__all__'


class DepartmentSerializer(serializers.HyperlinkedModelSerializer):
    url = serializers.HyperlinkedIdentityField(
        view_name="departments-api")

    class Meta:
        model = Department
        fields = ['url', 'name']

urls.py

urlpatterns = [
    path('api/', api_root),
    path('api/teachers/', TeacherAPIList.as_view(), name='teachers-api'),
    path('api/teachers/<int:pk>/', TeacherAPIDetail.as_view()),
    path('api/departments/', DepartmentAPIList.as_view(), name='departments-api'),
    path('api/users/', UserAPIList.as_view()),
    path('api/users/<int:pk>/', UserAPIDetail.as_view()),

]

views.py

@api_view(['GET'])
def api_root(request, format=None):
    return Response({
        'teachers': reverse('teachers-api', request=request, format=format),
        'departments': reverse('departments-api', request=request, format=format)
    })


class TeacherAPIList(generics.ListCreateAPIView):
    queryset = Teacher.objects.all()
    serializer_class = TeacherSerializer



class DepartmentAPIList(generics.ListCreateAPIView):
    queryset = Department.objects.all()
    serializer_class = DepartmentSerializer
Вернуться на верх