Получение ошибки при настройке 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