В разделе: Один ко многим в http://code.google.com/appengine/articles/modeling.html они показывают, как моделировать эти отношения.
class Contact(db.Model):
# Basic info.
name = db.StringProperty()
birth_day = db.DateProperty()
...
class PhoneNumber(db.Model):
contact = db.ReferenceProperty(Contact,
collection_name='phone_numbers')
...
Мне кажется, что если вы выполните следующее
scott = Contact(name='Scott')
scott.put()
PhoneNumber(contact=scott,
phone_type='home',
number='(650) 555 - 2200').put()
PhoneNumber(contact=scott,
phone_type='mobile',
number='(650) 555 - 2201').put()
for phone in scott.phone_numbers:
print '%s: %s' % (phone.phone_type, phone.number)
for phone in scott.phone_numbers:
print '%s: %s' % (phone.phone_type, phone.number)
Второй для выше снова запросит хранилище данных.
Если по какой-то причине вы перебираете «Скотт» и вызываете phone_numbers, он выполнит много операций чтения.Есть ли какой-то шаблон для их кэширования при первом чтении в течение срока действия запроса?или это должно быть обработано вручную?
Tx.