Вот альтернатива, в которой используется только одна модель (то есть идея Ника):
import webapp2
from google.appengine.ext import db
class EntityName(db.Model):
author = db.StringProperty()
# ...
event_locations = db.StringListProperty(indexed=False)
event_phases = db.StringListProperty(indexed=False)
class MainHandler(webapp2.RequestHandler):
def get(self):
e = EntityName(author='me',
event_locations=['1,2', '3,4'], event_phases=['A,B', 'C,D'] )
e.put()
q = EntityName.all().filter('author =', 'me')
text = ''
for en in q:
for locations, phases in zip(en.event_locations, en.event_phases):
text += "location=%s, phase=%s<br>" % (locations, phases)
self.response.out.write(text)
app = webapp2.WSGIApplication([('/', MainHandler)], debug=True)
Пример вывода:
location=1,2, phase=A,B
location=3,4, phase=C,D
Поскольку Порядок в целом сохраняется в свойствах List и StringList ваши местоположения и фазы для события могут быть сопоставлены, т. е. они имеют одинаковый индекс в двух списках.
С одной моделью вам придется немного больше разделить работукаждая запись в списке, но вы сохраняете данные для чтения и записи в хранилище данных, поскольку у вас есть только одна сущность.