Python ndb数据存储为我提供了重复=True和投影的错误

Python ndb数据存储为我提供了重复=True和投影的错误,python,google-app-engine,Python,Google App Engine,我有一个ndb模型类,如下所示: class User(ndb.Model): username = ndb.StringProperty() works = ndb.StringProperty(repeated=True) created_date = ndb.DateTimeProperty(auto_now_add=True) updated_date = ndb.DateTimeProperty(auto_now_add=True) user = Us

我有一个ndb模型类,如下所示:

class User(ndb.Model):
    username = ndb.StringProperty()
    works = ndb.StringProperty(repeated=True)
    created_date = ndb.DateTimeProperty(auto_now_add=True)
    updated_date = ndb.DateTimeProperty(auto_now_add=True)
user = User.query().fetch(projection=[User.works])
我使用了
repeated=True
,因为我想将数据保存到列表中的works字段。但当我查询时,它是这样工作的:

class User(ndb.Model):
    username = ndb.StringProperty()
    works = ndb.StringProperty(repeated=True)
    created_date = ndb.DateTimeProperty(auto_now_add=True)
    updated_date = ndb.DateTimeProperty(auto_now_add=True)
user = User.query().fetch(projection=[User.works])
我无法得到我想要的。如果我查看
用户
,我会发现:

[User(key=Key('User', 5629499534213120), works=[u'A'], _projection=('works',)), User(key=Key('User', 5629499534213120), works=[u'B'], _projection=('works',)), User(key=Key('User', 5629499534213120), works=[u'C'], _projection=('works',)), User(key=Key('User', 5629499534213120), works=[u'D'], _projection=('works',)).......................
为什么我不能得到这个:

[User(key=Key('User', 5629499534213120), works=[u'A', u'B', u'C', u'D'], _projection=('works',))

我能做什么?感谢您的帮助。

投影返回实体列表,而不是您希望的方式。看看这里:

您可以将结果循环为:

for u in user:
    print u.works # To get value of 'works'
    print u.key # Key of the entity, you can access other properties from this key.

希望有帮助。

好的,我如何使用投影查询进行过滤?这是一个列表,您可以使用列表理解为:value=[u for u in user if u.works==“somestring]”。简单提示一下:对于
updated_date
字段,使用
auto_now
而不是
auto_now_add
。否则,它将只更新一次。更多信息