Реализация поискового запроса внутри фильтра

Я пытался реализовать строку поиска в моем приложении, но я не знаю, как запрашивать похожие имена в моей базе данных. Вот мой 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")
Вернуться на верх