HyperlinkedRelatedField DRF не работает с ViewSet - PullRequest
0 голосов
/ 06 апреля 2019

У меня есть следующие модели:

class ExamSheet (models.Model):
    pass

class Exam(models.Model):
    exam_sheet = models.ForeignKey('myapp.ExamSheet',
                               related_name='exams',
                               )

Сериализатор:

class ExamBaseSerializer(serializers.ModelSerializer):
    exam_sheet = serializers.HyperlinkedRelatedField(queryset=ExamSheet.objects.all(), view_name='examsheet-detail')

    class Meta:
        model = Exam
        fields = ('id', 'user', 'exam_sheet', )
        read_only_fields = ('id', 'user',)

ViewSets:

class ExamViewSet(MultiSerializerViewSet):
    queryset = Exam.objects.all()

class ExamSheetViewSet(MultiSerializerViewSet):
    queryset = ExamSheet.objects.all()

Маршруты:

app_name = 'exams_api'
router = DefaultRouter()
router.register(r'exams', views.ExamViewSet)
router.register(r'exams_sheets', views.ExamSheetViewSet)
urlpatterns = []
urlpatterns += router.urls

Глобальные URL-адреса приложений:

urlpatterns = [
    path('api/', include('exams_api.urls')),
]

GenericViewSet:

class MultiSerializerViewSet(viewsets.ModelViewSet):
    serializers = {
        'default': None,
    }

    def get_serializer_class(self):
        return self.serializers.get(self.action, self.serializers['default'])

Но это приводит к ошибке:

Неправильно настроен в / api / экзамены /

Не удалось разрешить URL-адрес для связи с гиперссылкой, используя имя представления «подробный анализ».Возможно, вам не удалось включить связанную модель в ваш API или неправильно настроен атрибут lookup_field в этом поле.

Как использовать HyperlinkedRelatedField для отображенияссылка на похожую модель в моем сериализаторе?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...