получить имя_коллекции из родительского ключа в GAE

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

class Parent(db.Model):
  user = db.UserProperty()

class Childs(db.Model):
  refer = db.ReferenceProperty(Parent,collection_name='children')

person dhaval    schedule 30.06.2009    source источник


Ответы (2)


Да, ты можешь.

ReferenceProperty имеет еще одну удобную функцию: обратные ссылки. Когда модель имеет свойство ReferenceProperty для другой модели, каждая ссылочная сущность получает свойство, значением которого является запрос, возвращающий все сущности первой модели, ссылающиеся на нее.

# To fetch and iterate over every Childs entity that refers to the
# Parent instance p:
for child in p.children:
# ...
person an0    schedule 30.06.2009
comment
Этот ответ в определенной степени верен, за исключением того, что в конкретном примере вопроса в свойстве ссылки Чайлдса установлено имя коллекции. Итак, в этом случае экземпляр p не имеет childs_set, ссылки находятся в p.children - person Gareth Simpson; 01.07.2009
comment
О, кажется, вопрос был обновлен после того, как я дал ответ. Я обновил ответ, чтобы следовать этому изменению. - person an0; 08.07.2009

Я думаю, вы спрашиваете: «Могу ли я получить набор всех дочерних элементов, которые относятся к данному родителю».

В этом случае да, вы можете, это свойство класса Parent.

Предполагая, что у вас есть родительский объект p, тогда дочерние элементы, которые ссылаются на него, будут в p.children

Если бы вы не указали имя коллекции в ReferenceProperty, они были бы в p.childs_set.

Ознакомьтесь с документацией.

person Gareth Simpson    schedule 30.06.2009