App Engine - AttributeError:'function'对象没有属性'id'

时间:2012-03-22 01:30:44

标签: python google-app-engine google-cloud-datastore

我正在使用App Engine,SDK 1.6.3和Python 2.7。

我创建了一个这样的模型:

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

我可以迭代并查看除Key id之外的所有内容。例如,在交互式shell中我可以运行:

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'

任何人都可以帮助我吗?

2 个答案:

答案 0 :(得分:7)

key()和id()是实例方法。尝试用括号:

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

请参阅documentation

答案 1 :(得分:1)

key() is a methodid() is also a method
所以你需要这样做:

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

其他说明:

  1. 尽可能避免from [something] import *。这可能会导致难以调试的命名空间问题。
  2. 不要使用变量名影像内置插件。例如。不应使用list