2012-04-01 58 views
1
財產

說我有一個ndb.Model類,我想作爲一個StructuredProperty使用另一個模型類:NDB排序由StructuredProperty

class CommonExtraData(ndb.Model): 
    count = ndb.IntegerProperty(required=True) 

class MyObject(ndb.Model): 
    name = ndb.StringProperty(required=True) 
    extra = ndb.StructuredProperty(CommonExtraData, required=True) 

我能那麼做這樣的查詢:

MyObject.query().order(-MyObject.extra.count) 

我在文檔中找不到示例,並且由於我從舊API重構爲NDB,因此我的開發環境目前沒有正常工作。

回答

4

只做了一些實驗,它似乎工作。你應該能夠在你寫出來的時候確切地做到這一點。

在實驗中,我發現了一個應該注意的怪癖 - 如果使用重複屬性,它似乎只對重複屬性的第一個實例進行排序。例如,如果您的重複屬性具有[CommonExtraData(count = 5),CommonExtraData(count = 1)],另一個具有[CommonExtraData(count = 7),CommonExtraData(count = 2)],則它將按如下排序:

[CommonExtraData(COUNT = 7),CommonExtraData(計數= 2)] [CommonExtraData(計數= 5),CommonExtraData(計數= 1)]

+5

大約重複性能的事是沒有什麼不同比它由訂貨時一個重複的非結構化財產。 – 2012-04-02 03:50:59