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吗?