2012-04-01 34 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