У меня возникла странная проблема с отношением Entity в хранилище данных движка приложений Google.Я работаю над веб-приложением Python / GAE (учебное упражнение), полный код которого можно найти в sourceforge .
- У меня есть 2 модели:
- Галерея - поисковый запрос и (косвенно) список фотографий
- Фото - информация о фотографии, плюс галерея, к которой она принадлежит (collection_index = 'photos')
- У меня есть процесс загрузки, который создает галереи и добавляет к ним фотографии
- У меня есть страница, которая читает галерею из хранилища данных и использует атрибут ".photos" этого экземпляра Галереи, чтобы получить список фотографий в нем
Теперь вот странная частьin ... Если я изменяю файл (любой файл, на котором я тестировал) или даже просто обновляю метку времени файла (т. е. чтобы он перезагружался) ... запускается атрибут ".photos" галерейне удается. Например, если я пытаюсь загрузить страницу для галереи "flowers" :
Traceback (most recent call last):
File "C:\Applications\Google\google_appengine\google\appengine\ext\webapp\__init__.py", line 700, in __call__ handler.get(*groups)
File "C:\Eclipse-Workspace\galleries-google\app\views\gallery.py", line 33, in get for photo in gallery.photos:
AttributeError: 'Gallery' object has no attribute 'photos'
Я могу перезапустить веб-приложение, я могу перезапустить панель запуска приложения изатем запустите веб-приложение.Проблема сохраняется независимо от этого.Кажется, мне нужно заставить хранилище данных «запомнить» соединение каким-то образом
# Reading the list of photos for a given gallery via the Photo entity
# This seems to force the datastore to "remember" the connection between the two
from google.appengine.ext import db
import pprint
from app.models.gallery import Gallery
from app.models.photo import Photo
gallery = Gallery.get_by_key_name('candy')
print("Gallery: " + gallery.search_term)
q = db.GqlQuery("SELECT * FROM Photo WHERE gallery = :1", gallery )
photos = q.fetch(20)
for photo in photos :
print("\tphoto: " + photo.getUrl('original'))
или путем повторного приема всех данных с нуля (хотя я полагаю, что даже повторное использование одной галереи будет делать).
Есть ли у кого-нибудь мысли о том, что может быть причиной этого? Буду признателен за любую помощь.
Примечания:
- Это в среде разработчиков.Я еще не дошел до того, что стоит зарегистрировать его как веб-приложение на реальных серверах.
- Как ни странно, я недавно задал вопрос о том, как Как перечислить дочерние узлы в родительском в GAE ... так как я действительно хотел, чтобы информация существовала в определении родительской модели.Иронично, что это (по-видимому) отсутствие этой информации у родителя, которая сейчас вызывает проблему