0
我的工作在App Engine上一個Python NDB模型,看起來像:查詢GAE數據儲存轉化屬性值
class NDBPath(ndb.Model):
path = ndb.StringProperty()
directory = ndb.ComputedProperty(lambda self: getDirectory(self.path))
cat = ndb.IntegerProperty(indexed=False)
路徑是文件路徑,目錄是文件的superdirectory,和貓一些數字。這些實體只有在初始加載後纔有效讀取。
我查詢各種文件路徑的數據存儲,並要拉出來一個實體的cat
財產如果任一)其路徑的查詢路徑(同一個文件)相匹配,或者b)如果實體的目錄中的一個superdirectory查詢路徑。所以,我最終會做一個查詢,如:
NDBPath.query(NDBPath.directory.IN(generateSuperPaths(queriedPath)))
凡generateSuperPaths列出他們的查詢路徑的完整形式全部superdirectories(如a/b/c/d.html --> [/a, /a/b, /a/b/c]
)
因爲這些是隻讀的,用計算出的屬性是有效的浪費寫作,因爲它永遠不會改變。有什麼辦法基於動態轉化值查詢,像
NDBPath.query(getDirectory(NDBPath.path).IN(generateSuperPaths(queriedPath)))
這樣我就可以節省寫目錄的屬性,只是使用它的查詢?
不確定'yes'是什麼意思。計算屬性的添加完全是因爲「對已轉換值的查詢」在其他情況下是不可能的 - 例如getDirectory(NDBPath.path)將失敗(因爲getDirectory被非'str'調用)並且沒有辦法「將函數發送到數據存儲區」以在那裏應用以幫助您的查詢! – 2014-12-27 20:57:22