Как выполнить django полнотекстовый поиск вектора на одном поле модели объекта - PullRequest
0 голосов
/ 19 сентября 2019

У меня есть следующая модель, которая имеет response_results поле json, которое содержит большой набор данных объектов json:

В моей модели Response_Grab есть только один объект с идентификатором 8, у меня все данныев одном объекте

enter image description here

from django.contrib.postgres.fields import JSONField,ArrayField
from django.contrib.postgres.search import SearchVectorField

class Response_Grab(models.Model):
    response_domains = ArrayField(models.TextField(blank=True),blank=True,null=True,default=list)
    response_results = JSONField(blank=True,null=True,default=dict)
    response_grab_interval = models.IntegerField(default=48)
    search_vector = SearchVectorField(null=True)
  • response_results Пример формата jsonfield:
{
"http://google.com": {"Version": "1.0", "Server": "AkamaiGHost"},
"https://facebook.com":{"Version":"1.0","Server":"Apache"},
...
...
}
  • Вот что я сделал до сих пор:
>> from elasticapp.models import Response_Grab as rg

>> from django.db.models import TextField
>> from django.db.models.functions import Cast ### TO Convert JSON to Text 
>> rg.objects.annotate(search=SearchVector(Cast('response_results',TextField())),).filter(search='http://google.com')
<QuerySet [<Response_Grab: default>]>
  • Как мне сделать запрос так, чтобы при условии следующего KEY http://google.com возвращались все его значения, то есть {"Version": "1.0", "Server": "AkamaiGHost"}?
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...