Класс SearchVector использует to_tsvector
, но я не думаю, что ts_stat
доступен.
При первоначальном рассмотрении вашего вопроса я полностью упустил тот факт, что ts_stat
принимает строку вместо обычного результата. Это существенно меняет реализацию, и я не уверен, каков наилучший способ реализации этого ... но я дам вам простой способ обойти это, используя метод raw
в наборе запросов.
from django.db import models
class TsStat(models.Model):
word = models.CharField(max_length=256)
ndoc = models.PositiveIntegerField()
nentry = models.PositiveIntegerField()
class Meta:
managed: False
vector_query = models.ApiProduct.objects.annotate(
search=Func(Value('simple'), 'description', function='to_tsvector'),
).values('search')
results = TsStat.objects.raw('SELECT * FROM ts_stat(%s)' % vector_query.query)
Но это явно не проверено, синтаксис может немного отличаться, и вам, возможно, придется включить SearchVector
сразу, а не через фильтр.