1

У меня есть две модели категории и города:Как искать структурированные свойства? Google App Engine

class category(ndb.Model): 
     hidden = ndb.BooleanProperty() 
     categoryName = ndb.StringProperty() 

class city(ndb.Model): 
     categories = ndb.StructuredProperty(category,repeated = True) 
     cityName = ndb.StringProperty() 

У меня есть cityEntity: Как вернуть список категорий, которые содержат только category.hidden = ложь?

редактировать: это возможно, чтобы получить список категорий, затем Loop через список категорий и извлечь только те категории, которые не скрыты

, например, у меня есть город сущность:

categories_unhidden_list = [] 
for category in city.categories : 
    if not category.hidden : 
     categories_unhidden_list.append(category) 

, но я бы как получить category_unhidden_list из хранилища данных!

+0

https://cloud.google.com/appengine/docs/python/ndb/queries#filtering_structured_properties – voscausa

+0

@voscausa благодарит вас, но это не возвращает список категорий, которые возвращают объект города, я редактирую вопрос уточнить! – david

+0

Да, запрос возвращает целые объекты, содержащие ... (где вы запрашивали). Из фильтрованных объектов вы можете извлечь список категорий для обработки списка. – voscausa

ответ

0

Запрос будет соответствовать только тому, что запрашивается. Если объект выполняет условие, он возвращает объект. Если у вас есть повторное свойство и запрос соответствует одному из значений, он вернет весь список в сущности, а не только тот, который соответствует. Вот почему повторяющиеся свойства всегда должны быть либо ключом, либо простым значением, либо простой парой значений ключа.

Вы можете посмотреть в А) projection queries и В) структурировании данных таким образом, что вы можете запросить для категорий, которые имеют значение x и родитель-объект из key_y, вместо того чтобы обращаться к Y, где они имеют key_x в их повторный список.