2009-08-03 2 views
1

이상한 행동을 묻습니다. Google 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가 왜 '모두'가 중요하다고 생각하는지 모르겠습니까?


업데이트 : 죄송합니다 ... 나는 또한 요청 처리기가 모델과 동일한 이름을 가졌습니다. (

답변

4

all 실제로 속성 (특히 실행 한 방법)이다 ( 죄송합니다 ... 나는 나는 또한 요청 처리기는 모델과 동일한 이름을 가지고 있다는 것을 발견했습니다 그룹이 모델에서 상속 할 때 그 속성을 가져야하며 분명히 이상한 일이 일어나고 있습니다. 예를 들어 그룹의 이름이 생각하는 대상을 가리 키지는 않습니다 .호출에 try/except AttributeError, e:을 넣고, except 브랜치에서 가능한 모든 정보를 표시합니다 (예 : 로깅).에 대해 찾을 수 있습니다.(실제로 __bases__ 포함), dir() 등이 있습니다.

이것은 수행 할 수있는 수백 줄의 코드를 보지 않고도 당신을 도우려는 시도에 얼마나 멀리 갈 수 있는지에 관한 것입니다 (세부 사항을 정확히 알아내는 방법을 제안하고 Group이라는 이름으로 매우 이상한 것이 있었음을 진단하는 것) 누가 그 이름을 알지? -).

관련 문제