我之前有过NDB类,刚刚添加了新属性receive_news
:
class User(ndb.Model):
'''
Index
Key: user_id
'''
lang = ndb.StringProperty(required=None, indexed=True)
receive_news = ndb.BooleanProperty(required=None, indexed=True)
我想获得想要接收我的新闻的用户列表(目前所有用户)。我尝试了以下选项:
keys = User.query(User.receive_news != True).fetch(keys_only=True)
keys = User.query(User.receive_news == None).fetch(keys_only=True)
两者都返回0.我应该如何正确使用这个新属性?
答案 0 :(得分:0)
数据存储区索引仅在将实体写入数据存储区时更新,因此只有在创建新索引后写入的实体才会添加到其中。
要将预先存在的实体添加到索引中(以便查询可以找到它们),您必须先获取然后重新编写它们。也许在这些方面使用某些东西(如果它们太多,你必须将它分成不同的请求/任务)
keys = []
for user in ndb.get_multi(User.query().fetch(keys_only=True)):
if user.receive_news is None:
user.receive_news = True
keys.append(user.key)
ndb.put_multi(keys)