Пустой запрос возвращает все поля из базы данных. Django - PullRequest
3 голосов
/ 22 апреля 2020

В поле поиска, если я ничего не введу, но нажмите кнопку sh на кнопке для поиска запроса. Запрос возвращает каждое поле из базы данных. Company.objects.exclude (Q (name__isnull = True)). Exclude (Q (name__exact = '')) Почему-то это мне не помогает. Если я использую их вместе или отдельно. Код в views.py:

class className(listView)
    model=Company
    template_name='name_of_the_template.html'

    def get_queryset(self):
        query=self.request.Get.get('q')
        query=query.replace('#',' ') //same for ?\/$%^+*()[] *tried to set exclude code here

        if query == ' ':
            object_list = Company.objects.filter(Q(name__icontains='None'))//sending to the empty object
            return object_list
    else:
        // *tried to set exclude code here
            object_list = Company.objects.filter(Q(name__icontains=query))
            return object_list

Ничего из кода исключения не помогает. Я полагаю, что где-то совершаю простую ошибку ... потому что код должен работать, но как-то все же Я также пытался избавиться от оператора if и использовать операторы исключений для запросов, таких как '', '' и null, и после этого фильтра для запросов ... И теперь исключение запросов для '' также не работает ...

Django не говорит мне, что исключение не работает, все работает, кроме как в коде.

1 Ответ

1 голос
/ 22 апреля 2020

Если вы ничего не вводите, тогда строка пуста '', или это None, если не передан ни один параметр. Таким образом, вы можете проверить истинность из query, но вам, вероятно, лучше сначала .strip() строку, чтобы удалить пробелы в начале или в конце:

def get_queryset(self):
    query = self.request.Get.get('q')
    if query is not None:
        query = query.replace('#',' ')
        query = query.strip()
    if <b>not query</b>:
        return Company.objects<b>.none()</b>
    else:
        return Company.objects.filter(name__icontains=query)

В шаблоне вы можете затем используйте шаблонный блок {% for &hellip; %}&hellip;{% empty %}&hellip;{% endfor %} [Django -doc] :

{% <b>for</b> object in object_list %}
    {{ object }}
{% <b>empty</b> %}
    no objects found!
{% <b>endfor</b> %}
...