Django DRF Viewset URL Reversing Issue - NoReverseMatch for 'orderitem-list

При работе с Django и Django Rest Framework (DRF) я столкнулся с недоуменной проблемой. В частности, у меня есть два набора представлений, а именно OrderViewSet и OrderItemViewSet, оба зарегистрированы в DefaultRouter. Проблема возникает при попытке выполнить реверсирование URL для конечной точки 'orderitem-list', где я постоянно сталкиваюсь с ошибкой NoReverseMatch. Удивительно, но эта проблема не возникает при реверсировании URL для 'order-list'.

router = DefaultRouter()
router.register(r"", OrderViewSet, basename="order")
router.register(r"^(?P<order_id>\d+)/order-items", OrderItemViewSet, basename="orderitem")

urlpatterns = [
    path("", include(router.urls)),
]

def test_create_order_for_anonymous_user(self, client, address):
        url = reverse("order-list")
        response = client.post(url, {})

        assert response.status_code == 403
        assert Order.objects.count() == 0

Этот тестовый код работает успешно

def test_create_order_item_for_anonymous_user(self, client, order):
        url = reverse("orderitem-list", kwargs={"order_id": order.id})
        response = client.post(url, {})

        assert response.status_code == 403
        assert OrderItem.objects.count() == 0

Сообщение об ошибке: django.urls.exceptions.NoReverseMatch: Reverse for 'orderitem-list' with keyword arguments '{'order_id': 1}' не найден.

Есть идеи, почему это может происходить? Обратный вариант для 'order-list' работает без проблем.

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