繁体   English   中英

Django - 如何将动态 url 中的值传递到查询集中

[英]Django -how to pass value in dynamic url into queryset

我有一个动态 url,它将显示相同的页面,但具有特定数据,具体取决于 url 中的值。

我正在尝试设置一个视图,该视图将根据 url 中的值返回过滤后的数据,但我不知道如何将 url 中的值传递到查询集中。

视图.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

网址.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方法:

视图.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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM