Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在DRF中使用django过滤器_Django_Django Rest Framework_Get_Django Filter - Fatal编程技术网

如何在DRF中使用django过滤器

如何在DRF中使用django过滤器,django,django-rest-framework,get,django-filter,Django,Django Rest Framework,Get,Django Filter,在这里你可以看到我的意见与过滤器 class ProductFilter(django_filters.FilterSet): min_price = django_filters.NumberFilter(name="price", lookup_type='gte') max_price = django_filters.NumberFilter(name="price", lookup_type='lte') class M

在这里你可以看到我的意见与过滤器

class ProductFilter(django_filters.FilterSet):
    min_price = django_filters.NumberFilter(name="price", lookup_type='gte')
    max_price = django_filters.NumberFilter(name="price", lookup_type='lte')

    class Meta:
        model = Ad
        fields = ['min_price', 'max_price']


class FindByTag(generics.ListAPIView):
    queryset = Ad.objects.all()
    serializer_class = AdDetailSerializer
    filter_class = ProductFilter
请在下面查找此视图类的我的URL

urlpatterns = [
    path('api/v1/tag/select?', FindByTag.as_view())
]
最后是我的序列化程序

class AdDetailSerializer(serializers.ModelSerializer):
    class Meta:
        model = Ad
        fields = '__all__'
所以,主要的问题是我向

http://localhost:8000/api/v1/tag/select?max_price=10000
从我的postgres数据库接收所有记录,过滤器不工作,有人能解释为什么吗?我可以自由回答

与Django Rest框架的集成是通过 特定于DRF的
过滤器集
过滤器后端。这些可以在 rest_框架子包

如果要直接使用
filterset
进行过滤,则需要指定由
django filters
提供的
filter\u后端

from django_filters import rest_framework as filters

class FindByTag(generics.ListAPIView):
    queryset = Ad.objects.all()
    serializer_class = AdDetailSerializer
    filter_backends = (filters.DjangoFilterBackend,)
    filterset_class = ProductFilter
从django_过滤器将rest_框架作为过滤器导入
类FindByTag(generics.ListAPIView):
queryset=Ad.objects.all()
序列化程序\u类=加法器序列化程序
filter\u backends=(filters.DjangoFilterBackend,)
filterset_class=ProductFilter
编辑
class ProductFilter(django_filters.FilterSet):
min_price=django_filters.NumberFilter(field_name=“price”,lookup_expr='gte'))
max\u price=django\u filters.NumberFilter(field\u name=“price”,lookup\u expr='lte')

这似乎是答案,但您能对我的url\u模式说些什么呢。我粘贴了您的解决方案,在/api/v1/tag/select\uuuuu init\uuuuuuu()处获取了一个意外的关键字参数'name'@NazarLike edited,对
ProductFilter进行了一些修改
class ProductFilter(django_filters.FilterSet):
    min_price = django_filters.NumberFilter(field_name="price", lookup_expr='gte')
    max_price = django_filters.NumberFilter(field_name="price", lookup_expr='lte')