После создания нескольких приложений на платформе gae я обычно использую некоторые отношения между различными моделями в хранилище данных в основном в каждом приложении.И часто я чувствую необходимость посмотреть, какая запись принадлежит одному и тому же родителю (например, сопоставить все записи с одним и тем же родителем)
С самого начала я использовал db.ReferenceProperty, чтобы мои отношения развивались, например:
class Foo(db.Model):
name = db.StringProperty()
class Bar(db.Model):
name = db.StringProperty()
parentFoo = db.ReferanceProperty(Foo)
fooKey = someFooKeyFromSomePlace
bars = Bar.all()
for bar in bar:
if bar.parentFoo.key() == fooKey:
// do stuff
Но в последнее время я отказался от этого подхода, поскольку bar.parentFoo.key()
делает подзапрос, чтобы каждый раз получать Foo.Подход, который я сейчас использую, заключается в том, чтобы хранить каждый ключ Foo
в виде строки на Bar.parentFoo
, и таким образом я могу сравнить строку с someFooKeyFromSomePlace
и избавиться от всех издержек подзапроса.
Теперь я 'Я начал изучать группы сущностей и задумался, а не лучше ли это?Я не могу понять, как их использовать.
А что касается двух приведенных выше подходов, мне интересно, есть ли недостатки в их использовании?Может использовать сохраненный ключ возврата строки и укусил меня в * * *.И, наконец, что не менее важно, есть ли более быстрый способ сделать это?