【问题标题】:NDB ordering by property of StructuredPropertyNDB 按 StructuredProperty 的属性排序
【发布时间】:2012-04-01 16:30:44
【问题描述】:

假设我有一个 ndb.Model 类,我想在另一个模型类上用作 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,我的开发环境目前无法正常工作。

【问题讨论】:

    标签: python google-app-engine app-engine-ndb


    【解决方案1】:

    刚刚做了一些实验,它似乎正在工作。你应该可以按照你写的那样做。

    在实验中,我发现了一个需要注意的怪癖——如果您使用重复属性,它似乎只对重复属性的第一个实例进行排序。例如,如果您的重复属性具有 [CommonExtraData(count=5), CommonExtraData(count=1)] 而另一个具有 [CommonExtraData(count=7), CommonExtraData(count=2)],则排序如下:

    [CommonExtraData(count=7), CommonExtraData(count=2)] [CommonExtraData(count=5), CommonExtraData(count=1)]

    【讨论】:

    • 关于重复属性的事情与按重复的非结构化属性排序时没有什么不同。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-05-04
    • 2013-02-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多