Python 在django中实现分页和搜索过滤器

Python 在django中实现分页和搜索过滤器,python,django,filter,pagination,Python,Django,Filter,Pagination,请帮助我尝试使用搜索过滤器实现django分页。我不断得到以下错误: 输入错误/ 类型为“method”的对象没有len() 以下是我迄今为止的代码: def product_list(request, category_slug=None): search_term = '' category = None categories = Category.objects.all() adds = AddBanner.objects.all() product

请帮助我尝试使用搜索过滤器实现django分页。我不断得到以下错误:

输入错误/ 类型为“method”的对象没有len()

以下是我迄今为止的代码:

def product_list(request, category_slug=None):
    search_term = ''
    category = None
    categories = Category.objects.all()
    adds = AddBanner.objects.all()
    products_list = Product.objects.filter(available=True).order_by("-updated_at")
    productsImage = ProductImage.objects.all()

    print(product_list)

    query = request.GET.get("search")
    if query:
        products_list = products_list.filter(
        Q(name__icontains=query) |
        Q(description__icontains=query)
        ).distinct



    paginator = Paginator(products_list, 10)  # Show 10 contacts per page
    page = request.GET.get('page')

    try:
        products = paginator.page(page)
    except PageNotAnInteger:
        products = paginator.page(1)
    except EmptyPage:
        products = paginator.page(paginator.num_pages)


    context = {
        'category': category,
        'categories': categories,
        'products': products,
        'productsImages': productsImage,
        'search_term': search_term,
        'adds': adds

    }
    return render(request, 'shop/product/list.html', context)

你错过了括号:

if query:
    products_list = products_list.filter(
    Q(name__icontains=query) |
    Q(description__icontains=query)
    ).distinct
它应该是.distinct()
这就是为什么出现错误
type'method'没有len()

在哪一行代码上出现错误?请尝试:products=paginator.page(第页)除了PageNotAnInteger:products=paginator.page(1)除了EmptyPage:products=paginator.page(paginator.num\u pages)请包含完整的回溯。对于您尝试执行的操作,通用视图似乎是更好的选择,它为您提供分页功能