Django rest framework 在Django Rest框架中过滤多个值
我有一个模型,我想过滤多个值 我的模型:Django rest framework 在Django Rest框架中过滤多个值,django-rest-framework,filtering,django-rest-viewsets,Django Rest Framework,Filtering,Django Rest Viewsets,我有一个模型,我想过滤多个值 我的模型: class Product(models.Model): ean = models.CharField(max_length=13, unique=True) product_id = models.CharField(max_length=20, null=True, blank=True) product_image = models.URLField(max_length=300, null=True, blank=True
class Product(models.Model):
ean = models.CharField(max_length=13, unique=True)
product_id = models.CharField(max_length=20, null=True, blank=True)
product_image = models.URLField(max_length=300, null=True, blank=True)
product_title = models.CharField(max_length=300, null=True, blank=True)
我想在“ean”字段或主键上进行筛选,两者都可以。使用当前设置,我只看到最后一个值。例如,当我将URL构造为时,我只看到id为2的产品,我希望看到id为1和id为2的产品
如何构造视图集?
目前我有:
class ProductViewSet(ModelViewSet):
queryset = models.Product.objects.all()
serializer_class = serializers.ProductSerializer
filter_backends = [DjangoFilterBackend]
filter_fields = ('id','ean')
您可以在您的
视图.py
中尝试以下内容。并在参数中传递您的键id
和ean
。请注意,您必须在参数中以逗号分隔的值传递多个值
class ProductViewSet(APIView):
def get(self, request):
_id = self.request.GET.get('id', None).split(',')
ean = self.request.GET.get('ean', None).split(',')
qs = Product.objects.filter(Q(id__in=_id) | Q(ean__in=ean))
data = serializers.ProductSerializer(qs, many=True, context={'request': request}).data
if data:
return Response({
'message': 'success',
"data":data,
},status=200)
else:
return Response({
'message':'no data available',
'success':'False'
},status=200)
使用哪个选项可以让你更好地控制过滤操作你能举个例子@ArakkalAbu吗?