Добавление вложенных данных с помощью Elasticsearch DSL - PullRequest
0 голосов
/ 03 июня 2019

У меня есть две модели, которые выглядят так в Django:

class Poll(models.Model):
    user = models.ForeignKey(User, on_delete=models.CASCADE)
    question = models.CharField(max_length=200)


class Choice(models.Model):
    question    = models.ForeignKey(Poll, on_delete=models.CASCADE)
    choice      = models.CharField(max_length=120)
    vote_count  = models.IntegerField(default=0)

Каждый раз, когда пользователь добавляет новый опрос, он должен сохраняться в Elasticsearch. Способ сохранения должен выглядеть так:

{
"question": "Dogs or cats?",
"choices": [
   {
       "choice": "Dogs"
   },
   {
       "choice": "Cats"
   }
  ]
}

В моей модели опроса я создаю функцию индексирования следующим образом:

def indexing(self):
    obj = PollIndex(
        meta={'id': self.id},
        question=self.question,
        choices=self.choice_set,
    )
    obj.save()
    return obj.to_dict(include_meta=True)

Я определяю индекс следующим образом:

class PollIndex(Document):
    question        = Text()
    choices         = Nested()

Однако я получаю сообщение об ошибке: AttributeError: 'RelatedManager' object has no attribute 'items'

Что я делаю не так?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...