12

Мой вопрос очень фундаментален, я хочу знать прямо и правильно, чтобы получить доступ к значениям атрибута родительского объекта из дочернего элемента в App Engine Python. Например, у меня есть следующая схема модели. Я использую Python 2.7 и NDB.Как запросить родительский объект из дочернего объекта в Google App Engine (Python) NDB/Datastore?

class Gallery(ndb.Model): 
    category = ndb.StringProperty() 
    title  = ndb.StringProperty() 
    subtitle = ndb.StringProperty() 

class Image(ndb.Model): 
    blob_key = ndb.BlobKeyProperty() 
    title  = ndb.StringProperty() 
    gallery  = ndb.StringProperty() 
    is_slider = ndb.StringProperty() 

Здесь «Галерея» является родителем «изображения». Они образуют группу лиц Выставка => Галерея => Изображение. Я хочу отображать изображения из модели изображения вместе с деталями галереи, которые они принадлежат. Я могу получить доступ к дочернему объекту от родителя (изображение из галереи), но не наоборот. Я не хочу использовать модель изображения как StructuredProperty в модели Gallery. Я большую часть времени показываю изображения со всех изображений на основе других флагов, чем галерея (одна ситуация создает слайд-шоу из всех изображений, если is_slider = «да», поэтому запрос из изображения напрямую), но все же хотите отобразить информацию о соответствующей галерее, почему я хочу знать, как получить доступ к родительским данным.

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

ответ

29

Использование: image_instance.key.parent().get()

https://developers.google.com/appengine/docs/python/ndb/keyclass#Key_parent

+0

Благодаря Mjibson. это именно то, чего я отсутствовал. – fusionstrings

+0

Как использовать его внутри цикла шаблона (когда цикл находится на экземпляре изображения)? Я использую Jinja 2. – fusionstrings

+1

Если у вас есть вопрос, задайте вопрос, не публикуйте его в качестве комментария. – mjibson

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