我使用django-modeltranslation来转换模型字段。假设我有以下模型(其中名称在DB中被翻译):
class Book(models.Model):
name = models.CharField(max_length=90)
然后,在DRF视图中,我有一个端点,它接受一个查询文本,并使用以下代码搜索书名:
from django.contrib.postgres.search import SearchVector, SearchQuery, SearchRank
class BookView(APIView):
def get(self, request):
q = request.get('q')
vector = SearchVector('name') # this is where the issue is
query = SearchQuery(q)
matches = Book.objects.annotate(rank=SearchRank(vector, query))\
.filter(rank__gt=0.1)\
.order_by('-rank')
# etc.
当我只使用英语工作时,这很好用。但是现在我添加了一种新的语言,本地化的各个方面都工作得很好,除了这个搜索。它只查看name_en
字段值。
例如,如果目标语言是德语,我显式地将下面的行从:
vector = SearchVector('name')
致:
vector = SearchVector('name_de')
然后在正确的字段上搜索。有没有办法将正确的字段传递给SearchVector
?
2条答案
按热度按时间b91juud31#
IIUC,你可以使用
get_language()
:frebpwbc2#
我还将语言配置添加到ordeer中的查询中,以使其“意识到”语言。