• django filters TypeError __init__() got an unexpected keyword argument 'lookup_type'


    按照DRF文档 配置django_filters 筛选

    import django_filters
    from myapp.models import Product
    from myapp.serializers import ProductSerializer
    from rest_framework import generics
    
    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 = Product
            fields = ['category', 'in_stock', 'min_price', 'max_price']
    
    class ProductList(generics.ListAPIView):
        queryset = Product.objects.all()
        serializer_class = ProductSerializer
        filter_class = ProductFilter
    

    在请求此接口时发生错误

    TypeError at /api/project-center/
    __init__() got an unexpected keyword argument 'lookup_type'
    
    

    在看了django_filters 官方文档示例后将lookup_type 更换为lookup_expr后正常。

    class ProductFilter(django_filters.FilterSet):
        price = django_filters.NumberFilter()
        price__gt = django_filters.NumberFilter(name='price', lookup_expr='gt')
        price__lt = django_filters.NumberFilter(name='price', lookup_expr='lt')
    
        release_year = django_filters.NumberFilter(name='release_date', lookup_expr='year')
        release_year__gt = django_filters.NumberFilter(name='release_date', lookup_expr='year__gt')
        release_year__lt = django_filters.NumberFilter(name='release_date', lookup_expr='year__lt')
    
        manufacturer__name = django_filters.CharFilter(lookup_expr='icontains')
    
        class Meta:
            model = Product
    
     
     
  • 相关阅读:
    Cheatsheet: 2011 03.19 ~ 03.31
    Cheatsheet: 2011 03.07 ~ 03.14
    Cheatsheet: 2011 04.01 ~ 04.10
    Cheatsheet: 2011 04.20 ~ 04.29
    Java动手动脑02
    Java日报10.5
    java四则运算第三阶段
    验证码界面——Java图形界面
    Java四则运算V3.0
    Java日报10.8
  • 原文地址:https://www.cnblogs.com/jeff-ideas/p/10540329.html
Copyright © 2020-2023  润新知