Search code examples
djangodjango-rest-frameworkdjango-rest-viewsets

Unable to fetch parameters from Django URL


I am using Django REST Framework and I want to fetch the two parameters entered in the URL.

My URL is:

http://127.0.0.1:8000/api/v1/colleges/slug2/courses/sug1/

where 'slug2' and 'sug1' are the two slug parameters entered.

I want to retrieve those two parameters in my ModelViewSet

views.py

class CollegeCourseViewSet(viewsets.ReadOnlyModelViewSet):
    queryset = Course.objects.all()
    lookup_field = 'slug'

    def get_serializer(self, *args, **kwargs):
        if self.action == 'retrieve':
            slug1 = self.kwargs.get('slug1')
            slug2 = self.kwargs.get('slug2')
            print(slug2)
            queryset = Course.objects.filter(slug=slug2)
            return Response(CollegeCourseSerializer(queryset, many=True).data, status=status.HTTP_200_OK)

urls.py

router = routers.DefaultRouter()

router.register(r'courses', CollegeCourseViewSet, basename='college_course_list')

urlpatterns = [
    path('api/v1/colleges/<slug:slug>/', include(router.urls)),
]

But slug2 outputs None and hence the problem.

Is there any specific way to obtain those parameters.

Thanks in advance.


Solution

  • Actually I was trying to retrieve the slug of the lookup_field as well in the params. But it is related to model and not a parameter, rightly pointed out in the comments.

    So I just accessed it by the lookup_url_kwarg field in the ModelViewSet.

    For more details refer : this answer