Строка поиска Django и заглавные буквы

Здравствуйте, я делаю приложение на Django и у меня есть вопрос. Я сделал строку поиска. Все бы работало правильно, как я хочу, но проблема в том, что когда элемент имеет заглавную букву или наоборот, поиск не работает так, как я хотел бы. Я хотел сделать так, чтобы при написании 'tea' или 'TEA' или 'TeA' поиск осуществлялся по артикулу. Надеюсь, вы меня поняли :)

Код:

views.py
  def searchView(request):
    if request.method == "GET":
        context = request.GET.get('search')
        items = Item.objects.all().filter(title__contains=context)

urls.py:

     urlpatterns = [
    path('', ShopListView.as_view(), name='home-page'),
    path('signup', views.signup, name='signup-page'),
    path('login', views.loginView, name='login-page'),
    path('logout', views.logoutView, name='logout-page'),
    path('detail/<int:pk>/', ShopDetailView.as_view(), name='detail-page'),
    path('search/', views.searchView, name='search-page')
]  + static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)

Я думаю, что здесь проблема в запросе 'items'. Если вы хотите, чтобы я вставил больше кода, просто напишите его.

Вы можете фильтровать с помощью __icontains [Django-doc], чтобы сделать регистро-вчувствительное соответствие:

from django.views.decorators.http import require_GET

@require_GET
def searchView(request):
    if 'search' in request.GET:
        context = request.GET['search']
        items = Item.objects.filter(title__icontains=context)
    else:
        items = Item.objects.none()
    return render(request, 'shop/search.html', {'items': items})

Вы, вероятно, должны возвращать что-то в случае, если параметр search не передан. Например, пустую страницу.


Примечание: Вы можете ограничить представления только GET-запросами с помощью декоратора @require_GET декоратора [Django-doc].

Вернуться на верх