Этот вопрос закрыт для ответов, так как повторяет вопрос Проблема с поиском, регистром и кириллицей в Django REST Framework?
JawsIk
@JawsIk
Python Django, Lua, ЧПУ-станки(ArtCam, Aspire)

Почему не срабатывает регистронезависимый поиск через модель Q в django?

Всё просто. В models.py есть модель изделий и поиск производиться только по названию:
class Product(models.Model):
    category = models.ForeignKey(Category, on_delete=models.PROTECT)
    brand = models.ForeignKey(Brand, on_delete=models.SET(1), default=1)
    title = models.CharField(max_length=120)
    ...


Для поиска в views.py есть вьюха (и импорт сверху для её работы):
from django.db.models import Q

def client_search_view(request):
    query = request.GET.get('q')

    if query != None:
        products = Product.objects.filter(Q(title__icontains=query))
        context = {
            'title': 'Результаты поиска по запросу: ' + query,
            'products': products,
        }
    else:
        context = {
            'title': 'Введите строку поиска'
        }
    return render(request, 'client/client_search.html', context=context)


Естественно под это дело есть шаблон client_search.html, где находиться сама форма поиска и цикл результатов:
{% extends 'base.html' %}

{% block content %}
    <h3 class="text-center">{{ title }}</h3>
    <form action="{% url 'client_search' %}">
        <div class="form-group">
            <input type="text" class="form-control" placeholder="Вот в этой строке" name="q">
            <button type="submit" class="btn btn-info"><i class="glyphicon glyphicon-search"></i>&nbsp; Искать</button>
        </div>
    </form>
    {% if products %}
          {% for product in products %}
            ....
          {% endfor %}
    {% else %}
        <h3 class="text-center">По заданному запросу изделия отсутсвуют</h3>
    {% endif %}
{% endblock %}


Ну вроде всё просто.
Да, кстати база sqlite.
Django 2
Ubuntu 18

И вот title__icontains не срабатывает. Поведение одинаковое, как будто стоит просто title__contains.
Т.е. например ввожу: радиус - ничего не находит
Ввожу: Радиус - находит.

Сначала я думал, что он не может найти, потому что первое слово. Стал пробовать title_istartswith, но он всё равно этот i как будто не берёт в расчёт.

В чём засада? Может он не умеет с русским языком работать? UTF-8 стоит. Может ограничения sqlite? Может какой нюанс?

С уважением.
  • Вопрос задан
  • 520 просмотров
Ваш ответ на вопрос

Вопрос закрыт для ответов и комментариев

Потому что уже есть похожий вопрос.
Похожие вопросы