Как получить значение параметра Dajngo Rest Framework

Рейтинг: 0Ответов: 1Опубликовано: 21.04.2023

Мне нужно значение параметра pk в классе представления , но он его не получает ,вывел к консоль значение pk но оно равно None. Запрос вот такой отправлял api/vds/some/5/
Как получить значение pk?

urls

urlpatterns = [
    path('admin/', admin.site.urls),
    path('api/vds/product/', ProductList.as_view()),
    path('api/vds/category/', CategoryList.as_view()),
    path('api/vds/maker/', MakerList.as_view()),
    path('api/vds/some/<int:pk>/',GetSome.as_view()),
    path('api/vds/productdetail/<int:pk>/', DetailProduct.as_view()),
]

views

class GetSome(generics.RetrieveUpdateDestroyAPIView):
    serializer_class = ProductSerializer

    def get_family_tree(self):
        children = self.parent.all()

        if not children:
            return {'name': self.name, 'children': []}

        return {
            'name': self.name,
            'categories': [self.get_family_tree(child) for child in children],
        }

    def get_queryset(self):
        pk = self.request.data.get("pk")
        print(pk)
        categories = Category.objects.get(id=pk).get_family_tree(self)
        return Product.objects.filter(category__parent__in=categories)

Serializer

class ProductSerializer(serializers.ModelSerializer):
    class Meta:
        model = Product
        fields = ['id', 'name', 'description', 'category', 'maker']
        depth = 2

Ответы

▲ 1Принят

Измените функцию get_queryset

def get_queryset(self):
    pk = self.kwargs['pk']
    print(pk)
    categories = Category.objects.get(id=pk).get_family_tree(self)
    return Product.objects.filter(category__parent__in=categories)