DRF, почему мои корневые api урлы смешиваются (объединяются)?

Вот мои фрагменты кода:

# serializers.py
from rest_framework import serializers
from .models import User


class UserSerializer(serializers.HyperlinkedModelSerializer):
    class Meta:
        model = User
        fields = '__all__'


class UserActivitySerializer(serializers.HyperlinkedModelSerializer):
    class Meta:
        model = User
        fields = (
            'id',
            'email',
            'last_login',
            'last_requested_at',
        )
# urls.py
router = routers.DefaultRouter()
router.register(r'users', UserViewSet)
router.register(r'user-activity', UserActivityViewSet)

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

Это приводит к комбинированным урлам Root API, например: enter image description here

Однако это не является ожидаемым поведением. Я хотел получить 2 отдельных урла. Первый со всеми пользователями (например, localhost:8000/users со всеми пользователями и localhost:8000/users/ для конкретного пользователя). И второй с API user activity с этими 4 полями. Я не понимаю, почему мои урлы объединились, когда я добавил router.register(r'user-activity', UserActivityViewSet) в мой urls.py. Пожалуйста, помогите с широким объяснением, если это возможно. Спасибо!

Попробуйте указать basename маршрутам следующее:

# urls.py
router = routers.DefaultRouter()
router.register(r'users', UserViewSet, basename="users")
router.register(r'user-activity', UserActivityViewSet, basename="user-activity")

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

PS.: Некоторые версии DRF называют это base_name

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