Конфликт между путями djoser-а и собственного представления. Django RF
Всем привет! Задача по ТЗ следующая, нужно поставить djoser на путь users/, что бы обрабатывать эндпоинты для пользователей (регистрация и т.д). Так же есть 2-а дополнительных метода @action GET users/subcriptions/ - для получения всех подписок и @action POST, DELETE users/{id}/subscribe/ - для подписки/отписки.
urls
users = DefaultRouter()
users.register('users', views.UserViewSet)
router = DefaultRouter()
router.register('tags', TagViewSet)
router.register('recipes', RecipeViewSet, basename='recipes')
router.register('ingredients', IngridientViewSet)
router.register('users', SubscribtionsViewSet, basename='subscribe')
urlpatterns = [
path('', include(router.urls)),
path('', include(users.urls)),
re_path(r'^auth/', include('djoser.urls.authtoken')),
]
views
class SubscribtionsViewSet(ListModelMixin, CreateModelMixin, DestroyModelMixin, GenericViewSet):
@action(
methods=['GET'],
detail=False,
permission_classes=[permissions.IsAuthenticated],
pagination_class=LimitPageNumberPagination,
)
def subscriptions(self, request):
...
@action(
methods=['POST', 'DELETE'],
detail=True,
permission_classes=[permissions.IsAuthenticated],
)
def subscribe(self, request, pk):
pass
Изначально я наследовался от viewset djoser и объединял таким образом все нужные пути под одним представлением, но мне сказали, что наследование избыточно и нужно делать отдельно djoser и отдельно представление для двух вышеупомянутых методов. Как теперь быть, что бы не было конфликта между 2-я путями? При условии. что представление SubscribeViewSet трогать нельзя, она удовлетворяет требованиям.
Ответы (1 шт):
проблему решило наследование для SubscribtionsViewSet. Оставив только SubscribtionsViewSet(GenericViewSet).