foo__iconets QuerySet пуст при запросе к старым записям хранилища данных Google Cloud - PullRequest
0 голосов
/ 05 марта 2019

У меня есть модель Foo, в которой есть поле с именем bar.

class Foo(models.Model):
    bar = models.CharField(max_length=70)

При наличии существующего экземпляра Foo, чье поле bar установлено на 'qux', следующий запрос возвращает пустое QuerySet:

Foo.objects.filter(bar__icontains="qux")

Однако, если я ссылаюсь / сохраняю предыдущий экземпляр или создаю / сохраняю новый Foo, я могу найти его с помощью аналогичного запроса.

Итак, как мне найти старые, существующие записи, используя icontains?

В документации Djangae дается конкретная ссылка на использование contains и icontains, но я не вижу упоминания об этом конкретном поведении или о том, как его устранить. (Я вижу, что индекс добавляется в djangaeidx.yaml) Я также не вижу ничего в документации Migration , которая заставляет меня думать, что мне нужно явно добавить индекс или подобное.

1 Ответ

0 голосов
/ 05 марта 2019

Ответ можно найти в руководстве по миграции 0.9.10 .

В этой ситуации вам нужно запустить что-то вроде:

defer_iteration(Foo.objects.all(), Foo.save, _target="your-new-app-version")

для добавления необходимых индексов к существующим записям.

Хотя это сработало, оно определенно кажется мне тяжелым. Я был бы рад услышать от любого другого, кто мог бы иметь альтернативное решение.

...