2009-08-03 9 views
1

Ich habe ein Modell wie folgt aus:Abfrage seltsames Verhalten. Google App Engine-Datenspeicher

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

Manchmal, wenn die Ausführung von Abfragen wie:

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

oder

groups = Group.all() 

Ich erhalte Fehler Massagen wie folgt aus:

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' 

Aber wenn ich GQL-Abfragen mit der gleichen Bedeutung verwende, geht alles gut.

Warum passiert das? Ich verstehe nicht, warum GAE denkt, dass "alles" Attribut ist?


UPDATE: Oops ... Ich habe herausgefunden, dass ich Request-Handler auch die gleichen wie Modell genannt hatte, (

Antwort

4

all ist in der Tat ein Attribut (genauer gesagt eine ausführbare Datei ein, ein Verfahren) aber da Group von Model erbt, sollte es dieses Attribut haben, es ist offensichtlich etwas Seltsames passiert, zum Beispiel bezieht sich der Name Group an dem Punkt nicht auf das Objekt, von dem Sie denken, dass er es tut.Ich schlage vor, einen try/except AttributeError, e: um Ihren groups = Group.all() Aufruf zu setzen, und im except Zweig emittieren (z. B. durch Protokollierung) alle möglichen Informationen, die Sie überfinden können, einschließlich was __bases__ es tatsächlich hat, dir(), und so weiter.

Hier geht es darum, wie weit man gehen kann, um Ihnen zu helfen (zu diagnostizieren, dass etwas sehr Seltsames mit dem Namen Group passiert zu sein scheint und Details vorschreibt), ohne Ihre vielen hundert Zeilen Code zu sehen wer-weiß-was zu diesem Namen! -).