0

Я пытаюсь запросить для всех объектов, которые не имеют значения для данного повторяющегося свойства.GAE фильтр по отсутствию повторяющегося свойства

Например представьте, что вы имеете следующую модель:

class Foo(ndb.Model): 
    bar = ndb.IntegerProperty(repeated=True) 

и вы хотите, чтобы все экземпляры Foo где бар не имели никакого значения, или []. Как бы вы выполняли этот запрос или работали над этим поведением?

Примечание (от ОПРС документации GAE в):

Запрашивание значение None на повторный собственности имеет неопределенный поведение; не делайте этого

ответ

1

Ну, как говорят документы, вы не можете.

Одним из способов приблизиться к этому может быть сохранение другого свойства модели, которое записывает, сколько значений оно имеет в баре. Вам нужно будет обновить это, когда объект будет сохранен: хорошим способом было бы переопределить put(), чтобы сделать self.bar_count = len(self.bars) перед вызовом метода суперкласса.

Конечно, вам нужно будет просмотреть имеющиеся данные, чтобы установить счетчики; вы можете использовать mapper для этого.

+3

Похоже, что 'bar_count' должен быть' ComputedProperty' для упрощения кода приложения (так что «на лету» вычисление происходит автоматически при 'put', без необходимости переопределять). –

Смежные вопросы