Привет, ребята. Я создаю простой django веб-сайт, на котором пользователь может долго искать. Проблема сейчас в том, что я не могу понять, почему фильтр, созданный с помощью библиотеки django_filters, не работает.
Если вы наберете «Queen» в строке поиска дома, на который вы будете перенаправлены поиски. html, где перечислены все LP Queen (всего 4). Слева есть фильтр. Если вы введете «kind» в форму и отправите заявку, вы должны увидеть альбом «Kind of Magi c». Это не работает И я думаю, что проблема заключается в наборе запросов "sp":
class searchesView(TemplateView):
template_name = "search/searches.html"
def post(self, request, *args, **kwargs):
print('FORM POSTED WITH {}'.format(request.POST['srh']))
srch = request.POST.get('srh')
if srch:
sp = Info.objects.filter(Q(band__icontains=srch)) | Info.objects.filter(Q(disco__icontains=srch))
myFilter = InfoFilter(request.GET, queryset=sp)
sp = myFilter.qs
paginator = Paginator(sp, 10)
page_number = request.GET.get('page')
page_obj = paginator.get_page(page_number)
return render(self.request, 'search/searches.html', {'sp':sp, 'myFilter':myFilter,
'page_obj': page_obj
})
else:
return render(self.request, 'search/searches.html')
Я думаю, что проблема заключается в наборе запросов, потому что тогда я попытался построить результат. html страница, где я перечислил все LP в базе данных и применил тот же фильтр выше, и здесь он отлично работает:
def result(request):
result = Info.objects.all()
myFilter = InfoFilter(request.GET, queryset=result)
result = myFilter.qs
return render (request, 'search/result.html', {'result':result, 'myFilter':myFilter})
Разница в том, что в первом случае у меня есть TemplateView с определенным набором запросов, а во втором случае у меня есть простая функция с другим набором запросов. Кто-то знает, в чем может быть проблема? Я загрузил код на repl, если вы хотите попробовать веб-сайт: https://Django-Template.edwardradical.repl.co
Большое спасибо!