如何在django rest框架中获得多对多字段过滤器?

如何在django rest框架中获得多对多字段过滤器?,django,python-3.x,django-rest-framework,Django,Python 3.x,Django Rest Framework,我想过滤我的数据,比如localhost:8000/api/1/deliveries/report/?user=1,2Many-to-Many字段我不想只过滤一个字段,但我无法帮助我 这里是视图.py class ReportView(generics.ListCreateAPIView): queryset = Delivery.objects.all() serializer_class = serializers.DeliverySerializer filter

我想过滤我的数据,比如
localhost:8000/api/1/deliveries/report/?user=1,2
Many-to-Many字段我不想只过滤一个字段,但我无法帮助我

这里是
视图.py

class ReportView(generics.ListCreateAPIView):
    queryset = Delivery.objects.all()
    serializer_class = serializers.DeliverySerializer

    filter_backends = [DjangoFilterBackend]

    filter_fields = {
        'too': ['lte'],
        'fromm': ['gte'],
        'electric_bike': ['exact'],
        'mode': ['exact'],
        'user': ['exact'],

    }
class ReportSerializer(serializers.ModelSerializer):
    class Meta:
        model = Delivery
        fields = '__all__'
这里是Serializer.py

class ReportView(generics.ListCreateAPIView):
    queryset = Delivery.objects.all()
    serializer_class = serializers.DeliverySerializer

    filter_backends = [DjangoFilterBackend]

    filter_fields = {
        'too': ['lte'],
        'fromm': ['gte'],
        'electric_bike': ['exact'],
        'mode': ['exact'],
        'user': ['exact'],

    }
class ReportSerializer(serializers.ModelSerializer):
    class Meta:
        model = Delivery
        fields = '__all__'
我只得到一个用户过滤器
http://localhost:8000/api/1/deliveries/report/?user=1
像这样

这在以下章节中进行了解释:

这是用于创建查找中筛选器的基类。该筛选器类应与另一个筛选器类一起使用,因为该类仅验证传入值是否以逗号分隔。然后使用辅助过滤器验证各个值

因此,您应该定义一个过滤器类:

#filters.py
类别NumberFilter(BaseFilter、NumberFilter):
通过
类报告过滤器(过滤器集):
user=NumberInFilter(字段\u name='user',查找\u expr='in')
类元:
模型=交付
#你应该把你现有的过滤器放在这里
字段={
'too':['lte'],
'fromm':['gte'],
“电动自行车”:[准确的],
“模式”:[“精确”],
}
然后在视图集中使用它:

#views.py
类ReportView(generics.ListCreateAPIView):
queryset=Delivery.objects.all()
serializer\u class=serializers.DeliverySerializer
过滤器\后端=[DjangoFilterBackend]
filterset_class=ReportFilter
使用筛选器类更灵活,因为您可以实现更高级的逻辑和行为。

这在以下部分中进行了说明:

这是用于创建查找中筛选器的基类。该筛选器类应与另一个筛选器类一起使用,因为该类仅验证传入值是否以逗号分隔。然后使用辅助过滤器验证各个值

因此,您应该定义一个过滤器类:

#filters.py
类别NumberFilter(BaseFilter、NumberFilter):
通过
类报告过滤器(过滤器集):
user=NumberInFilter(字段\u name='user',查找\u expr='in')
类元:
模型=交付
#你应该把你现有的过滤器放在这里
字段={
'too':['lte'],
'fromm':['gte'],
“电动自行车”:[准确的],
“模式”:[“精确”],
}
然后在视图集中使用它:

#views.py
类ReportView(generics.ListCreateAPIView):
queryset=Delivery.objects.all()
serializer\u class=serializers.DeliverySerializer
过滤器\后端=[DjangoFilterBackend]
filterset_class=ReportFilter

使用筛选器类更灵活,因为您可以实现更高级的逻辑和行为。

它不像brother@JayVasant那样工作。

它不像brother@JayVasant那样工作