Возможно ли передать id внешнего ключа в URL Django rest-framework?

Я использую маршрутизаторы в Django Rest Framework и пытаюсь создать динамический URL на основе внешнего ключа. Мой urls.py файл выглядит следующим образом,

router = routers.DefaultRouter()
router.register('user/<int:user_id>/profile',
                IntensityClassViewSet, 'intensity_classes')

urlpatterns = router.urls

Мой models.py файл выглядит следующим образом,

class Profile(models.Model):
    user = models.ForeignKey(
        User, related_name='profile_user', on_delete=models.CASCADE)
    character = models.CharField(max_length=10, null=True, blank=True)

Мой views.py файл выглядит следующим образом,

class ProfileViewSet(viewsets.ModelViewSet):
    queryset = Profile.objects.all()
    serializer_class = ProfileSerializer

Я получаю ошибку 404 во всех запросах (post, put, get). Есть ли какое-нибудь простое решение для такого рода реализации?

Вот как я решаю ту же проблему

views.py

from rest_framework import mixins
from rest_framework.generics import GenericAPIView

class RetrieveUpdateDeleteProfile(
    mixins.RetrieveModelMixin,
    mixins.UpdateModelMixin,
    mixins.DestroyModelMixin,
    GenericAPIView
):

    lookup_field = 'id'
    serializer_class = ProfileSerializer
    queryset = Profile.objects.all()

    def get(self, request, *args, **kwargs):
        return self.retrieve(request, *args, **kwargs)

    def put(self, request, *args, **kwargs):
        return self.update(request, *args, **kwargs)

    def patch(self, request, *args, **kwargs):
        return self.partial_update(request, *args, **kwargs)

    def delete(self, request, *args, **kwargs):
        return self.destroy(request, *args, **kwargs)

urls.py

from django.urls import path
from .views import RetrieveUpdateDeleteProfile

urlpatterns = [
    path('profile/<int:id>/', RetrieveUpdateDeleteProfile.as_view(), name='profile_rud'),
]

Таким образом, вы можете получать, обновлять и удалять (GET, POST, PUT, DELETE) профиль obj с помощью одной конечной точки API

После изменения URL в формате regex моя проблема была решена. Вместо этого,

router.register('user/<int:user_id>/profile', ProfileViewSet, 'profile')

Я написал это,

router.register(r'user/(?P<user_id>\d+)/profile', ProfileViewSet, 'profile')
Вернуться на верх