Реализация поискового запроса внутри фильтра
Я пытался реализовать строку поиска в моем приложении, но я не знаю, как запрашивать похожие имена в моей базе данных. Вот мой view.py
queryprms = request.GET
name = queryprms.get('name')
status = queryprms.get('status')
if name:
moderatorRoom = PokerRoom.objects.values("id", "first_name_user", "date", "name", "status", "styleCards", "datetime", 'slug'
).filter(Q(user=user), Q(name=name)).order_by("-datetime")
Проблема в том, что когда пользователь ищет похожее слово, скажем, "Alch" для "Alchemy", запрос возвращает пустоту, даже если объект "Alchemy" существует в моей базе данных. Я хочу, чтобы запрос возвращал похожие объекты для поиска пользователя. Как я могу это сделать?
Кстати, я использую Postgre и Django 3.1.5.
Для частичного сопоставления строки можно использовать аргумент ключевого слова contains lookup, как объясняется в docs. В вашем случае может сработать что-то вроде этого:
PokerRoom.objects.filter(name__icontains="Alch")
Попробуйте это:
queryprms = request.GET
name = queryprms.get('name')
status = queryprms.get('status')
if name:
moderatorRoom = PokerRoom.objects.values("id", "first_name_user", "date", "name", "status", "styleCards", "datetime", 'slug'
).filter(user=user, name__icontains=name).order_by("-datetime")