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' работает без проблем.