Google DataStore - ленивая загрузка? - PullRequest
2 голосов
/ 19 мая 2010

если у меня есть объект Customer со списком заказов, объявленный с использованием db.ReferenceProperty

Через некоторое время у меня может появиться огромное количество заказов, если я потяну объект «Заказчик», не рискну ли я получить полный комплект заказов?

1 Ответ

6 голосов
/ 19 мая 2010

Да, поля db.ReferenceProperty загружаются лениво. От Документы :

ReferenceProperty автоматически ссылается и разыменовывает экземпляры модели как значения свойств: экземпляр модели может быть назначен непосредственно ReferenceProperty, и его ключ будет использоваться. Значение ReferenceProperty можно использовать так, как если бы оно было экземпляром модели, и будет извлечена сущность хранилища данных, а экземпляр модели будет создан при первом использовании таким способом. Нетронутые ссылочные свойства не запрашивают ненужные данные.

Так, например:

# Any reference properties not loaded yet
customer = Customer.get_by_id(1)
print customer.name
print customer.address

# Assuming customer.order is a ReferenceProperty, now is when it
# would be loaded from the datastore.
print customer.order.created_at
...