查询奇怪的行为。 Google App Engine数据存储区

时间:2009-08-03 22:28:24

标签: python google-app-engine google-cloud-datastore

我有一个这样的模型:

class Group(db.Model):
  name = db.StringProperty()
  description = db.TextProperty()

有时执行以下查询:

groups = Group.all().order("name").fetch(20)

groups = Group.all()

我正在接受这样的错误按摩:

Traceback (most recent call last):
File "/opt/google_appengine/google/appengine/ext/webapp/__init__.py", line 501, in __call__
handler.get(*groups)
File "/home/al/Desktop/p/mwr-dev/main.py", line 638, in get
groups = Group.all()
AttributeError: type object 'Group' has no attribute 'all'

但是当我使用具有相同含义的GQL查询时,一切都很顺利。

为什么会这样?我不明白GAE为什么认为“所有”属于属性?


更新:  哎呀......我发现我的请求处理程序与模型名称相同;(

1 个答案:

答案 0 :(得分:4)

all确实是一个属性(特别是一个可执行的属性,一个方法),但是当Group继承自Model时,它应该具有该属性;很明显发生了一些奇怪的事情,例如,该点上的名称Group并未引用您认为它的对象。我建议在您的try电话周围加except AttributeError, e: / groups = Group.all(),并在except分支发出(例如通过记录)您可以找到的有关Group的所有可能信息},包括它实际拥有的__bases__dir()等等。

这是关于可以在多大程度上帮助您(诊断名称Group必须发生一些非常奇怪的事情并建议如何查明细节),而不会看到您的数百行代码可能是谁知道这个名字是什么! - )。