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

标签 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()
    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' has no len()

关于python - 在django中实现分页和搜索过滤器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52839415/

相关文章:

python - 从 Python 运行 WinSCP 命令

python - 在 Django 中将数据插入表之前检查条件

python - 从列表中的嵌套元组中获取特定值

python - 在 Windows XP 上安装 Python 2.5 应该是什么样的?

python - Python中的循环导入导致无法调用上层模块的函数

python - 使用 PIL 在图像上添加文本

python - 在 Django 的基本模板中设置背景图像

excel - Grails:如何创建类似于 MS Excel 中的过滤器?

ios - 用于多个字典键的 Swift 过滤器

python - 在退出 Python 程序之前等待所有守护线程完成的简单方法?