【发布时间】:2011-01-24 09:55:46
【问题描述】:
根据文档:http://code.google.com/appengine/docs/python/datastore/datamodeling.html#References 自动创建的反向引用对象是一个 Query 对象,因此可能会对其进行迭代并进行 fetch 调用。
但是: 我有一个模型:
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 发生了一些变化?我很确定以前它像查询一样工作。文档页面上甚至还有一个示例,显示的用法与我的相同:
for obj in obj1.secondmodel_set:
# ...
另外获取没有反向引用的查询也可以:
things = Thing.all().filter('owner =', user)
【问题讨论】:
-
你能找出导致第一个异常和第二个异常的任何特定情况吗?
标签: python google-app-engine google-cloud-datastore