App Engine - AttributeError: у объекта 'function' нет атрибута 'id' - PullRequest
2 голосов
/ 22 марта 2012

Я использую App Engine, SDK 1.6.3 с Python 2.7.

Я создал такую ​​модель:

class MyModel(db.Model):
    name = db.StringProperty()
    website = db.StringProperty()

Я могу повторить и увидеть все, кроме идентификатора ключа. Например, в интерактивной оболочке я могу запустить это:

from models import *
list = MyModel.all()
for p in list:
    print(p.name)

и печатает имя каждой сущности. Но когда я запускаю это:

from models import *
list = MyModel.all()
for p in list:
    print(p.key.id)  [or p.key.name or p.key.app]

Я получаю AttributeError:

Traceback (most recent call last):
  File "/Applications/GoogleAppEngineLauncher.app/Contents/Resources/GoogleAppEngine-default.bundle/Contents/Resources/google_appengine/google/appengine/ext/admin/__init__.py", line 317, in post
    exec(compiled_code, globals())
  File "<string>", line 4, in <module>
AttributeError: 'function' object has no attribute 'id'

Может кто-нибудь помочь мне ?? 1015 *

Ответы [ 2 ]

7 голосов
/ 22 марта 2012

key () и id () являются методами экземпляра. Попробуйте с круглыми скобками:

   for p in list:
        print(p.key().id())

См. Документацию .

1 голос
/ 22 марта 2012

key() - это метод , а id() - это также метод .
Так что вам нужно сделать:

from models import MyModel
lst = MyModel.all()
for p in lst:
    print(p.key().id())

Другие примечания:

  1. Старайтесь, по возможности, избегать from [something] import *.Это может вызвать проблемы с пространством имен, которые трудно отладить.
  2. Не дублируйте встроенные модули именами переменных.Например, list не следует использовать.
...