Elasticsearch dsl добавление внешнего ключа - PullRequest
0 голосов
/ 04 июня 2019

У меня есть модель с именем Poll, эта модель имеет отношение один ко многим с другой моделью, которая называется Choice 1. У опроса может быть много вариантов. Каждый раз, когда сохраняется опрос, я бы хотел сохранить этот опрос в Elasticsearch.

Модель

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

    def indexing(self):
        obj = QuestionIndex(
            meta={'id': self.id},
            question=self.question,
            choices=self.choice_set.count(), # How many choices are there?
        )
        obj.save()
        return obj.to_dict(include_meta=True)

Индекс

class QuestionIndex(Document):
    question        = Text()
    choices         = Integer()

    class Index:
        name = 'questions'

Я уже добавил сигнал в Django для выполнения, чтобы сохранить данные в Elasticsearch. Это работает нормально, однако я вижу, что значение выбора всегда равно 0, хотя я добавляю варианты. Варианты сохраняются в моей базе данных, но число вариантов всегда равно 0. Что я делаю неправильно?

1 Ответ

1 голос
/ 04 июня 2019

Когда создается опрос, генерируется сигнал, и в это время данные выбора не заполняются в базе данных.У меня была та же проблема, и я решил ее, добавив отложенную фоновую задачу в сельдерее для индексации документа.

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