2009-08-03 90 views
1

我有这样一个模型:查询奇怪的行为。谷歌App Engine数据存储

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


UPDATE: 哎呀......我发现我也有请求处理程序命名为同型号;(

回答

4

all确实是一个属性(特别是可执行的一个,方法)但是当Group从Model继承时,它应该有这个属性;显然有些奇怪的事情正在发生,例如名称Group在这个时候并不是指你认为它的对象,我建议在你的groups = Group.all()呼叫周围放一个try/except AttributeError, e:,并在except分支发出(例如通过记录)所有可能的信息,你可以找到关于Group,包括它实际上有什么__bases__,它的dir()等等。

这是关于能够在多大程度上尝试帮助您(诊断名称为Group的一些非常奇怪的事情,并建议如何查明细节),而无需查看可能会执行的数百行代码谁知道这个名字是什么!)。

相关问题