drf-nested-routers RuntimeError ('родительский зарегистрированный ресурс не найден') - PullRequest
0 голосов
/ 17 марта 2019

Я пытаюсь использовать пакет drf-nested-routers для создания вложенных маршрутов в моем API.

Я попытался следовать вместе с документацией (https://github.com/alanjds/drf-nested-routers), а также прочитать несколько потоков Stackoverflow в надежде выяснить эту проблему.

Я хотел бы создатьsingle NestedSimpleRouter. Вот что у меня есть внутри моего файла routers.py:

from django.urls import path, include
from rest_framework.routers import DefaultRouter
from rest_framework_nested import routers
from api_v1.viewsets import DeviceViewSet, BreadcrumbViewSet

router = DefaultRouter()
router.register(r'devices', DeviceViewSet, base_name='devices')

device_breadcrumbs_router = routers.NestedSimpleRouter(router, r'breadcrumbs', lookup='breadcrumb')
device_breadcrumbs_router.register(r'breadcrumbs', BreadcrumbViewSet, base_name='breadcrumbs')

api_url_patterns = [
    path('', include(router.urls)),
    path('', include(device_breadcrumbs_router.urls)),
]

Затем я включаю api_url_patterns в мой файл urls.py:

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

urlpatterns = [
    path('api/v1/', include(api_url_patterns)),
    path('admin/', admin.site.urls),
]

А вот мои Viewsets:

class DeviceViewSet(viewsets.ModelViewSet):
    serializer_class = DeviceSerializer

    def get_queryset(self):
        return Device.objects.all()


class BreadcrumbViewSet(viewsets.ModelViewSet):
    serializer_class = BreadcrumbSerializer

    def get_queryset(self):
        device_id = self.kwargs.get('device', None)
        return Breadcrumb.objects.filter(device_id=device_id)

Надеюсь, что шаблон URL будет выглядеть как /api/v1/devices/<device_id>/breadcrumbs/. К сожалению, код, который я отображал выше, приводит к ошибке RuntimeError('parent registered resource not found')

Я не могу понять, почему эта ошибка происходит с предоставленной мною помощью. Любая помощь будет принята с благодарностью.

...