Django - как передать значение в динамическом url в набор запросов

У меня есть динамический url, который будет отображать одну и ту же страницу, но с определенными данными в зависимости от значения, которое находится в url.

Я пытаюсь создать представление, которое будет возвращать отфильтрованные данные на основе значения в url, но я не знаю, как передать значение в url в queryset.

Views.py:

from rest_framework import permissions
from .serializers import ProductSerializer,CategorySerializer
from .models import Product,Category
from rest_framework.response import Response
from rest_framework.views import APIView
# Create your views here.
class ProductViewSet(viewsets.ModelViewSet):
    queryset=Product.objects.all()
    serializer_class= ProductSerializer

class CategoryViewSet(viewsets.ModelViewSet):
    queryset=Category.objects.all()
    serializer_class= CategorySerializer

class ProductbyCategory(viewsets.ModelViewSet):
    categoryid=1
    def __init__(self,request,categoryid):
        self.categoryid=categoryid
    queryset=Product.objects.filter(categoryid=categoryid)
    serializer_class= ProductSerializer

Urls.py

from .views import ProductViewSet,CategoryViewSet,ProductbyCategory
from rest_framework import routers
from .serializers import ProductSerializer,CategorySerializer
from .models import Product,Category

router = routers.DefaultRouter()
router.register(r'products', ProductViewSet)
router.register(r'category', CategoryViewSet)
router.register(r'sort-by-category/<int:categoryid>', ProductbyCategory)

urlpatterns = [
    path('',include(router.urls)),
    path('api-auth/', include('rest_framework.urls', namespace='rest_framework')),
] 

Любая помощь будет очень признательна

Вы можете переопределить метод get_queryset:

Views.py

class ProductbyCategory(viewsets.ModelViewSet):
    serializer_class= ProductSerializer

    def get_queryset(self):
        categoryid = self.kwargs['categoryid'] 
        return Product.objects.filter(categoryid=categoryid)
# You have to override get_queryset method

class ProductbyCategory(viewsets.ModelViewSet):
    serializer_class= ProductSerializer
    def get_queryset(self):
        categoryid = self.request.query_params.get('categoryid')
        queryset=Product.objects.filter(categoryid=categoryid)
        return queryset
Вернуться на верх