Я пытаюсь просто изменить свой ModelSerializer на HyperlinkedModelSerializer, чтобы включить URL-адрес для каждого из объектов, перечисленных в ListView браузера по умолчанию API.
В соответствии с документами, так как я использую по умолчанию 'pk для поиска я просто изменяю класс, от которого унаследован сериализатор:
# class SeasonSerializer(serializers.ModelSerializer):
class SeasonSerializer(serializers.HyperlinkedModelSerializer):
# url = serializers.HyperlinkedIdentityField(
# view_name='season', lookup_field='pk') ---> Not needed according to docs but have also tried with this
class Meta:
model = Season
fields = ('id', 'url', 'years', 'active')
и добавляю контекст при его создании в виде:
class SeasonListView(APIView):
def get(self, request, *args, **kwargs):
queryset = Season.objects.all().order_by('years')
serializer = SeasonSerializer(
queryset, many=True, context={'request': request})
print('INFO: ', serializer)
permission_classes = [ ]
authentication_classes = [ ]
return Response({"Seasons": serializer.data})
class SeasonDetailView(APIView):
def get(self, request, *args, **kwargs):
pk = kwargs['pk']
season = get_object_or_404(Season, pk=pk)
serializer = SeasonSerializer(season, context={'request': request})
# print('Data: ', serializer.data) --> this breaks
return Response(serializer.data)
И мои конечные точки То же, что и при использовании ModelSerializer:
urlpatterns = [
path(r'seasons/', SeasonListView.as_view(), name='season-list'),
path(r'seasons/<int:pk>/', SeasonDetailView.as_view(), name='season-detail'),
]
Ошибка следующая:
Для http://localhost: 8000 / api / seasons / 1 /
Exception Type: ImproperlyConfigured
Exception Value:
Could not resolve URL for hyperlinked relationship using view name "season-detail". You may have failed to include the related model in your API, or incorrectly configured the `lookup_field` attribute on this field.
А для http://localhost: 8000 / api / seasons /
Exception Type: ImproperlyConfigured
Exception Value:
Could not resolve URL for hyperlinked relationship using view name "season-detail". You may have failed to include the related model in your API, or incorrectly configured the `lookup_field` attribute on this field.
Что мне здесь не хватает?
Спасибо!