![](/img/trans.png)
[英]How to pass dynamic url of selected value from dropdwonlist in django
[英]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.