Реализовать пагинацию и поисковый фильтр в Django - PullRequest
0 голосов
/ 16 октября 2018

Пожалуйста, помогите, я пытаюсь реализовать 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)

1 Ответ

0 голосов
/ 17 октября 2018

Вы пропустили круглые скобки:

if query:
    products_list = products_list.filter(
    Q(name__icontains=query) |
    Q(description__icontains=query)
    ).distinct

Это должно быть .distinct () Вот почему вы получаете ошибку type 'method' has no len()

...