0

目前我使用像下面的代碼 -有沒有辦法將NDB類型作爲字符串傳遞?

Price.query().fetch(keys_only=True)) 

Price這裏是硬編碼樣的名字。有沒有什麼辦法有類似:

def get_kind_keys(kindname): 
    return Kind(kindname).query().fetch(keys_only=True) 

回答

4

ndb保持與所有車型dict,你可以自己嘗試:

from google.appengine.ext import ndb 

print ndb.Model._kind_map 

您的代碼段將結束這樣的:

def get_kind_keys(kindname): 
    return ndb.Model._kind_map[kindname].query().fetch(keys_only=True) 
2

ndb.Query接受一種在它的構造函數。您可以實現get_kind_keys爲:

def get_kind_keys(kindname): 
    return ndb.Query(kind=kindname).fetch(keys_only=True) 

什麼可以讓使用_kind_map更吸引人的是,如果你使用PolyModel,呼籲模型query()將正確篩選所需的類。否則,這兩個解決方案是等價的。您可以查看source code以瞭解Model._query究竟有什麼區別。

相關問題