2017-07-30 100 views
0

我收到了NDB类和刚才添加的新属性receive_news如何查询NDB中新创建的属性?

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

数据存储索引只在实体写入数据存储时更新,所以只有在创建新索引后写入的实体才会被添加到数据存储中。

要将预先存在的实体添加到索引(以便可以通过查询找到它们),您必须先获取并重新编写它们。也许使用这些方面的东西(如果它们太多,你将不得不将它分成单独的请求/任务)

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)