У меня определен ModelViewSet. Исходя из моих требований, все мои методы просмотра должны работать с определенным шаблоном URL, который выглядит примерно так:
/api/app/system_name/subsystem_name/object_name
Их я извлекаю из kwargs
в методе get_qeryset
и фильтрую запросы.
Теперь, для моих методов получения, удаления и размещения, мне также нужно получить pk
, поэтому адрес API должен быть:
/api/app/system_name/subsystem_name/object_name/pk
Моя проблема в том, когда я добавьте значение pk
к URL-адресу, kwargs
все испорчено и выглядит примерно так:
{'system_name': 'system_name/subsystem_name', 'subsystem_name': 'object_name', 'object_name': 'pk'}
Мне нужен мой метод списка для работы с этим:
/api/app/system_name/subsystem_name/object_name
и мои методы удаления, размещения и извлечения работают следующим образом:
/api/app/system_name/subsystem_name/object_name/pk
Вот как зарегистрирован мой маршрутизатор и мой urlpattern:
router.register("(?P<system_name>.+)/(?P<subsystem_name>.+)/(?P<object_name>.+)", MyModelViewSet, basename="list_viewset")
urlpatterns = [
path('', include(router.urls))
]
Я просто не могу заставить это работать правильно. Я прочитал здесь документацию и много вопросов и ответов, но до сих пор не могу понять этого.