Как использовать параметр__contains с SearchRank в Django?

#django #postgresql

#django #postgresql

Вопрос:

Я хочу использовать rank для упорядочивания, но также мне нужен поиск с __contains для широкого запроса. Как я могу использовать contains и SearchRank одновременно?

 vectors = SearchVector('title', weight='A')   SearchVector('title_english', weight='A')   SearchVector('content', weight='B')   SearchVector('content_english', weight='B')
    query = SearchQuery(value)
    articles = Article.objects.annotate(
        rank = SearchRank(vectors, query)
        ).filter(search__contains  = 'rank', category=category).order_by('rank')
  

Примечание: я могу запрашивать таким образом, но не могу упорядочивать по рангу

     vectors = SearchVector('title', weight='A')   SearchVector('title_english', weight='A')   SearchVector('content', weight='B')   SearchVector('content_english', weight='B')
    articles = Article.objects.annotate(
        search = vectors
        ).filter(search__contains = value, category=category)
  

Комментарии:

1. можете ли вы поделиться дополнительным кодом? Я не понимаю, что ты там делаешь

2. @Florin Я только хочу знать, как добавить __contains (выражение%LIKE% в SQL) к параметру запроса в процессе SearchRank. Мой код не завершен. Приведенный выше код является просто примером

3. Если вы хотите фильтровать по строке, а не по внешнему ключу, вы можете сделать это следующим образом. ...filter(search__fieldName__contains=...). Where the fieldName` — это поле из модели foreignkey

4. @Florin Но я должен задать SearchQuery для использования SearchRank. По этой причине я не могу использовать поиск в фильтре

5. Вы нашли решение?