1

我有一个这样的模型:

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 认为“全部”是属性?


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

4

1 回答 1

4

all确实是一个属性(特别是一个可执行的属性,一种方法),但是由于 Group 从 Model 继承,它应该具有该属性;显然发生了一些奇怪的事情,例如,此时的名称 Group 并不指代您认为的对象。我建议在您的呼叫周围放置一个try/ ,并在分支中发出(例如通过记录)您可以找到的所有可能信息,包括它实际拥有的内容、它的等等。except AttributeError, e:groups = Group.all()exceptGroup__bases__dir()

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

于 2009-08-03T22:40:22.487 回答