Django REST Framework reverse() не находит соответствия для "{basename}-detail" маршрутизатора

Этот вопрос чрезвычайно похож на: Как исправить это исключение NoReverseMatch в маршрутизаторах Django rest frameworks? но это не было отвечено/решено и после долгих поисков здесь я ищу помощи.

Я пытаюсь создать API с помощью разработки на основе тестов. В соответствии с обычной практикой я начинаю свои тесты с сохранения постоянных переменных для URLS с помощью django.urls.reverse()

Проблема в том, что reverse('{app}:{basename}-list') работает нормально, но reverse('{app}:{basename}-detail') выбрасывает исключение:

django.urls.exceptions.NoReverseMatch: Reverse for 'designer-detail' with no arguments not found. 2 pattern(s) tried: ['api/design/designer/(?P<pk>[^/.]+)\\.(?P<format>[a-z0-9]+)/?$', 'api/design/designer/(?P<pk>[^/.]+)/$']

Мой test.py: (обратите внимание, что list url запускается первым и не выбрасывает исключений)

from rest_framework.test import APITestCase, APIClient
from django.contrib.auth import get_user_model
from rest_framework_simplejwt.tokens import RefreshToken
from django.urls import reverse
from rest_framework import status
from designs.models import Designer
from designs.serializers import DesignerSerializer


DESIGNER_LIST_URL = reverse('designs:designer-list')
DESIGNER_DETAIL_URL = reverse('designs:designer-detail')

My app/urls.py:

from rest_framework.routers import DefaultRouter
from designs.views import DesignerViewset


app_name = 'designs'

router = DefaultRouter()
router.register(r'designer', DesignerViewset, 'designer')

urlpatterns = router.urls

Мой проект/urls.py:

from django.contrib import admin
from django.urls import path, include

urlpatterns = [
    path('admin/', admin.site.urls),
    path('api/user/', include('user.urls')),
    path('api/design/', include('designs.urls'))
]

Мой serializers.py:

from rest_framework import serializers
from designs.models import Designer


class DesignerSerializer(serializers.ModelSerializer):
    """
    Model serializer for Designer.
    """
    class Meta:
        model = Designer
        fields = "__all__"

И мой views.py:

from rest_framework.viewsets import ModelViewSet
from designs.models import Designer
from designs.serializers import DesignerSerializer


class DesignerViewset(ModelViewSet):
    """
    ModelViewSet for the Designer model.
    """
    queryset = Designer.objects.all()
    serializer_class = DesignerSerializer

Я пробовал изменять basename, router, app_name, urlpatterns, но ничего не помогает. Я просмотрел официальную документацию по ванильному django и DRF. Больше всего смущает почему работает как ожидалось, но "designs:designer-list" не работает? Предполагается, что DefaultRouter должен позаботиться об этом. Я вручную проверил это последнее сравнение в оболочке Django."designs:designer-detail"

Что я упускаю?

Причина, по которой возникает ошибка, заключается в том, что URL имеет параметр pk, и вам необходимо указать его значение, чтобы определить путь URL.

Вы можете передать значение именованных параметров с параметром kwarg=…, так:

reverse('designs:designer-detail', kwargs={'pk': 42})

где 42 - первичный ключ элемента, для которого вы хотите получить подробную информацию.

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