美文网首页
django filters TypeError __init

django filters TypeError __init

作者: 青穗黄 | 来源:发表于2017-11-10 10:00 被阅读352次

    按照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
    

    相关文章

      网友评论

          本文标题:django filters TypeError __init

          本文链接:https://www.haomeiwen.com/subject/jwnvmxtx.html