DRF: неправильно сконфигурировано viewsets lookup_field

#python #django #django-rest-framework #django-rest-viewsets

#python #django #django-rest-framework #django-rest-viewsets

Вопрос:

Я переношу свой DRF из generics в viewsets, но получаю эту ошибку:

 Could not resolve URL for hyperlinked relationship using view name "monument-detail". You may have failed to include the related model in your API, or incorrectly configured the `lookup_field` attribute on this field.
  

Это мой urls.py

 from app.api import views
from rest_framework import routers

router = routers.DefaultRouter()
router.register(r'monuments', views.MonumentsViewSet)

urlpatterns = router.urls
  

Это мой набор представлений

 from app.api import serializers
from rest_framework import viewsets


class MonumentsViewSet(viewsets.ModelViewSet):
    serializer_class = serializers.MonumentSerializer
    queryset = serializer_class.Meta.model.objects.all()
    lookup_field = 'id'
  

И, наконец, вот мой сериализатор

 from app.api import models
from rest_framework import serializers


class MonumentSerializer(serializers.HyperlinkedModelSerializer):
    images = serializers.StringRelatedField(many=True)

    class Meta:
        model = models.Monument
        fields = '__all__'
  

Комментарии:

1. почему для поля images вы используете ссылку на monument ?

2. @BearBrown — ошибка, но если я удалю этот параметр, это выдаст мне эту ошибку assert self.view_name is not None, 'The view_name argument is required.'

3. Можете ли вы показать свои модели?

Ответ №1:

Удалить lookup_field = 'id' . Я не знаю, почему это происходит, но это сработало, когда я скопировал ваш код.

P.S В вашей ошибке говорится, что вы неправильно настроили ‘lookup_field’