Согласно документам: http://code.google.com/appengine/docs/python/datastore/datamodeling.html#References автоматически созданный объект обратной ссылки является объектом Query, поэтому возможна итерация по нему и выполнение вызовов извлечения.
Но : У меня есть одна модель:
class User(db.Model):
name = db.StringProperty()
...
и вторая модель:
class Thing(db.Model):
owner = db.ReferenceProperty(User)
...
И когда я пытаюсь получить доступ к обратной ссылке:
for thing in user.thing_set:
...
или:
user.thing_set.fetch(100)
Я получаю исключение, подобное этому:
<type 'exceptions.TypeError'>: '_ReverseReferenceProperty' object is not iterable
или вот так:
<type 'exceptions.AttributeError'>: '_ReverseReferenceProperty' object has no attribute 'fetch'
Я делаю что-то не так или произошли некоторые изменения в appengine?Я уверен, что раньше это работало как Query.На странице документов есть даже пример, который показывает то же использование, что и у меня:
for obj in obj1.secondmodel_set:
# ...
Дополнительно, получение запроса без обратной ссылки работает нормально:
things = Thing.all().filter('owner =', user)