Функциональность поиска в Django ORM

если в таблице есть два типа данных: 'ABC-DE' и 'ABCDE' если кто-то ищет с пробелом и подчеркиванием или дефисом, то как искать это без регулярного выражения

Q является лучшим.

from django.db.models import Q 

Пример:

posts.filter(Q(title__icontains=query) | Q(tags__name__icontains=query) | Q(body__icontains=query)).order_by('-updated').distinct() 

Не очень хорошо со временем отклика, но вы можете сделать так:

Этот запрос будет игнорировать space, hyphen и вам также следует удалить все символы спецификации из поискового ввода.

from django.db.models.functions import Lower, Replace


search_input = (search_input.replace(" ","").replace("-","").replace("_","")).lower()
Post.object.annotate(name_lower=Replace(Replace(Lower("name"), Value(" "), Value("")), Value("-"), Value(""))).filter(name_lower__icontains=search_input)


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