AppEngine:Запросить хранилище данных для записей со значением <отсутствует>

StackOverflow https://stackoverflow.com/questions/598605

Вопрос

Я создал новое свойство для своей модели базы данных в хранилище данных Google App Engine.

Старый:

class Logo(db.Model):
  name = db.StringProperty()
  image = db.BlobProperty()

Новый:

class Logo(db.Model):
  name = db.StringProperty()
  image = db.BlobProperty()
  is_approved = db.BooleanProperty(default=False)

Как запросить записи логотипа, для которых не установлено значение is_approved?Я пытался

logos.filter("is_approved = ", None)

но это не сработало.В средстве просмотра данных новые значения полей отображаются как .

Это было полезно?

Решение

Согласно документации App Engine на Запросы и индексы, существует различие между сущностями, имеющими нет стоимость недвижимости, а также те, которые имеют нулевой ценность для него;и «Сущности без фильтрованного имущества никогда не возвращаются запросом». Таким образом, невозможно написать запрос для этих старых записей.

Полезная статья есть Обновление схемы вашей модели, в котором говорится, что единственный поддерживаемый в настоящее время способ найти объекты, у которых отсутствуют некоторые свойства, — это изучить их все.В статье приведен пример кода, показывающий, как циклически перемещаться по большому набору сущностей и обновлять их.

Другие советы

Возможно, это изменилось, но я могу фильтровать записи по нулевой поля.

Когда я пробую запрос GQL SELECT * FROM Contact WHERE demo=NULL, он возвращает только записи, для которых отсутствует демонстрационное поле.

Согласно документу http://code.google.com/appengine/docs/python/datastore/gqlreference.html:

Правая сторона сравнения может быть одной из следующих (в зависимости от типа данных свойства):...] логический буквальный, как истинный или ложь;тот НУЛЕВОЙ буквальный, который представляет нулевое значение (нет в Python).

Я не уверен, что "нулевой" такой же как "отсутствующий" хотя :в моем случае эти поля уже существовали в моей модели, но не были заполнены при создании.Может быть, Федерико, вы могли бы сообщить нам, работает ли запрос NULL в вашем конкретном случае?

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top