Django использует параметры URL для запроса базы данных в представлении на основе классов - PullRequest
0 голосов
/ 10 октября 2018

У меня есть форма, которая при отправке переходит на страницу результатов, где URL-адрес будет, например:

appname/results/?make=BMW

Я хочу использовать параметры URL-адреса для запроса базы данных и отображения результатов на этой странице.

Это код, который у меня есть:

просмотров

class SearchView(FormView):

    template_name = 'carproject/search.html'

    def get(self, request, *args, **kwargs):
        form = AdvancedSearch(self.request.GET or None)
        context = {'form': form}
        if form.is_valid():
            return render(request, 'carproject/results.html')
        else:
            return render(request, self.template_name, context)

class ResultsView(TemplateView):
    template_name = 'carproject/results.html'

    def get_queryset(self, request, *args, **kwargs):
        make = self.request.GET.get('make')
        results = Vehicles.objects.filter(makename__icontains='make')
        context = {'results': results}

        return render(request, self.template_name, context)

HTML

<table>
{% for item in results%}
                <tr>
                    <td>{{item.makename}}</td>
                    <td>{{item.model}}</td>
                    <td>{{item.seriesname}}</td>
                    <td>{{item.seatingcapacity}}</td>
                    <td>{{item.pricenew}}</td>
                </tr>
                {% endfor %}
</table>

1 Ответ

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

Я не знаю, в чем вопрос, но вы должны изменить

results = Vehicles.objects.filter(makename__icontains='make')

на

results = Vehicles.objects.filter(makename__icontains=make)

'make' -> make

...