Django ListView устанавливает набор запросов по умолчанию для метода get_queryset () - PullRequest
0 голосов
/ 03 февраля 2020

У меня есть страница со списком сообщений и формой поиска, чтобы сузить выбор.

Чтобы использовать ввод формы в ListView, я изменил метод get_queryset ():

from django.views import generic

def is_valid_queryparam(param):
    return param != '' and param is not None

class PostsListView(generic.ListView):
    model = Posts

    def get_queryset(self):
        qs = Posts.objects.all()

        # get parameters from URL, for example
        # http://localhost:8000/list/title_contains=example&username_contains=example
        title_contains_query = self.request.GET.get('title_contains')
        username_contains_query = self.request.GET.get('username_contains')

        # filter queryset based on form inputs
        if is_valid_queryparam(title_contains_query):
            qs = qs.filter(title__icontains=title_contains_query)
        if is_valid_queryparam(username_contains_query):
            qs = qs.filter(author__username__icontains=username_contains_query)

        # then return the filtered queryset
        return(qs)

template:

{% extends "base.html" %}
{% load crispy_forms_tags %}

{% block content %}

<div class="form-section">
  <form method="GET" action=".">
    <div class="form-row">
      <div class="form-group col-6">
          {{ form.title|as_crispy_field }}
      </div>
      <div class="form-group col-6">
          {{ form.username|as_crispy_field }}
      </div>
    </div>
    <button type="submit" class="btn btn-primary">Submit</button>
  </form>
</div>

{% for post in object_list %}
<div>
  <h1>{{ post.title }}</h1>
  <h3>{{ post.author }}</h3>
  <p> {{ post.content }}</p>
</div>
{% endfor %}

{% endblock content %}

Форма поиска работает хорошо, но проблема в том, что теперь, когда я впервые открываю страницу со списком сообщений, мой список не отображает ничего, пока я не заполню форму поиска и не нажму submit.

Я хотел бы отобразить все сообщения на странице по умолчанию перед заполнением формы поиска для поиска определенных c сообщений.

Каков наилучший способ сделать это?

Обновление: добавлен пример обработки набора запросов с параметрами URL

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...