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

Я получаю следующую ошибку, когда пытаюсь выполнить GET запрос к странице /api/dishes-types/ в моем веб-приложении:

Неправильная конфигурация в /api/dishes-types/
Не удалось разрешить URL для отношения с гиперссылкой, используя имя представления "category-detail". Возможно, вы не включили связанную модель в свой API или неправильно настроили атрибут lookup_field для этого поля.


Я пытался применить к своему коду все решения с этой страницы, но у меня ничего не получилось. Как решить эту ошибку? Я действительно застрял...

Вот мой код.


models.py:
* Я заменил метаклассы и магические __str__ методы, предназначенные для админ-панели

from django.db import models


class Category(models.Model):
    name = models.CharField(max_length=30, unique=True)


class DishesType(models.Model):
    name = models.CharField(max_length=30, unique=True)
    category = models.ForeignKey(Category, on_delete=models.CASCADE)


class Dish(models.Model):
    name = models.CharField(max_length=64, unique=True)
    type_of_food = models.ForeignKey(DishesType, on_delete=models.CASCADE)
    description = models.CharField(max_length=1000)
    prices = models.JSONField()

serializers.py:


views.py:

from rest_framework.generics import get_object_or_404
from rest_framework.response import Response
from rest_framework.viewsets import ModelViewSet

from Pub.models import Category, DishesType, Dish
from .serializers import (
    CategoriesSerializer, SingleCategorySerializer,
    DishesTypesSerializer, SingleDishesTypeSerializer,
    DishesSerializer, SingleDishSerializer
)


class BaseViewMixin(ModelViewSet):
    lookup_field = "name"
    queryset = None
    multiple_serializer = None
    single_serializer = None

    def get_serializer_class(self, *args, **kwargs):
        if self.action in ["retrieve", "update", "destroy"]:
            return self.single_serializer
        return self.multiple_serializer

    def retrieve(self, request, name=None, **kwargs):
        model_instance = get_object_or_404(self.queryset, name=name)
        serializer = self.single_serializer(model_instance, context={'request': request})
        return Response(serializer.data)


class CategoryModelView(BaseViewMixin):
    queryset = Category.objects.all()
    multiple_serializer = CategoriesSerializer
    single_serializer = SingleCategorySerializer


class DishesTypeModelView(BaseViewMixin):
    queryset = DishesType.objects.all()
    multiple_serializer = DishesTypesSerializer
    single_serializer = SingleDishesTypeSerializer


class DishModelView(BaseViewMixin):
    queryset = Dish.objects.all()
    multiple_serializer = DishesSerializer
    single_serializer = SingleDishSerializer

routes.py:


from .views import CategoryModelView, DishesTypeModelView, DishModelView


router = SimpleRouter()

router.register(r"categories", CategoryModelView)
router.register(r"dishes-types", DishesTypeModelView)
router.register(r"dishes", DishModelView)


urlpatterns = router.urls

Вернуться на верх