Python ndb数据存储为我提供了重复=True和投影的错误
我有一个ndb模型类,如下所示: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
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
。否则,它将只更新一次。更多信息