Упорядочение NDB по свойству StructuredProperty - PullRequest
1 голос
/ 01 апреля 2012

Скажем, у меня есть класс 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.

1 Ответ

4 голосов
/ 02 апреля 2012

Только что немного поэкспериментировал и, похоже, работает.Вы должны быть в состоянии сделать это точно так, как вы написали.

В эксперименте я обнаружил одну причуду, на которую следует обратить внимание - если вы используете повторяющееся свойство, оно, похоже, сортирует только первый экземпляр повторяющегося свойства.,Например, если ваше повторное свойство имеет [CommonExtraData (count = 5), CommonExtraData (count = 1)], а другое свойство имеет [CommonExtraData (count = 7), CommonExtraData (count = 2)], оно будет отсортировано следующим образом:

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

...