2009-08-03 124 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的一些非常奇怪的事情,並建議如何查明細節),而無需查看可能會執行的數百行代碼誰知道這個名字是什麼!)。

相關問題