Получение объекта TypeError в / 'function' не может быть повторяемым - PullRequest
0 голосов
/ 29 апреля 2019

Я продолжаю получать эту ошибку (объект 'function' не повторяется) после добавления новой функции def в мой файл .views, какие-либо мысли о том, в чем может быть проблема?

Цель с этимфильтровать наборы запросов с помощью флажков.

Вот моя функция views.py:

def FilterView(request):
    qs = Product.objects.all()
    ptag = request.GET.get('ptag')

    if ptag == 'on':
        qs = qs.filter(ptag='')

    qs = filter(request)
    context = {
        'queryset': qs
    }
    return render(request, "partials/search_form.html", context)

И в моих URL:

from search.views import HomeView, FilterView

urlpatterns = [
    url(r'^$', HomeView.as_view(), FilterView),
]

Большое спасибо!

Ответы [ 2 ]

1 голос
/ 29 апреля 2019

Вы передаете как домашний просмотр, так и просмотр фильтра.Вам нужно выбрать один.

в urls.py изменить

url(r'^$', HomeView.as_view(), FilterView)

на

url(r'^$', Filterview)
1 голос
/ 29 апреля 2019

Ваш код не имеет смысла.Вы передаете как HomeView, так и FilterView одному url() и запускаете встроенную функцию filter для объекта запроса?Вот рабочий пример, за исключением необъяснимого filter():

urls.py

from search.views import HomeView, FilterView

urlpatterns = [
    ...
    url(r'^$', FilterView, name='filter'),
    ...
]

views.py

def FilterView(request):
    ptag = request.GET.get('ptag', '')
    qs = Product.objects.all() if ptag != 'on' else Product.objects.filter(ptag='')

    #qs = filter(request)  # What is this even trying to do?
    context = {
        'queryset': qs
    }
    return render(request, "partials/search_form.html", context)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...