Запрос странное поведение. Хранилище данных Google App Engine - PullRequest
1 голос
/ 04 августа 2009

У меня есть такая модель:

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: Упс ... Я узнал, что у меня также был обработчик запроса, названный так же, как модель;

1 Ответ

4 голосов
/ 04 августа 2009

all действительно является атрибутом (в частности, исполняемым, методом), но поскольку Group наследует от Model, она должна иметь этот атрибут; очевидно, что происходит что-то странное, например, имя Группа в этой точке не относится к объекту, который, по вашему мнению, имеет значение. Я предлагаю поместить try / except AttributeError, e: вокруг вашего groups = Group.all() вызова и в ветви except emit (например, путем регистрации) всю возможную информацию, которую вы можете найти о Group, включая то, что __bases__ фактически имеет его dir() и пр.

Речь идет о том, как далеко можно зайти, пытаясь помочь вам (диагностируя, что с именем Group произошло нечто очень странное, и предлагая, как точно определить детали), не видя ваших сотен строк кода, которые могут быть делаю кто-знает-что под этим именем! -).

...