ndb извлекает ключ сущности по идентификатору без родителя

Я хочу получить ключ сущности, зная идентификатор сущности и предка. Идентификатор уникален в пределах группы сущностей, определенной предком. Мне кажется, что этоневозможно использовать интерфейс ndb. Как я понимаю, хранилище данных может быть вызвано тем, что для выполнения этой операции требуется полное сканирование индекса. Обходной путь, который я использовал, заключается в создании вычисляемого свойства в модели, которое будет содержать часть идентификатора ключа. Я'Теперь я могу сделать запрос предка и получить ключ

class SomeModel(ndb.Model):
    ID = ndb.ComputedProperty( lambda self: self.key.id() )

    @classmethod
    def id_to_key(cls, identifier, ancestor):
        return cls.query(cls.ID == identifier,
                         ancestor = ancestor.key ).get( keys_only = True)

Кажется, это работает, но есть ли лучшие решения этой проблемы?

Обновить Кажется, что для хранилища данных естественным решением является использование полных путей вместо идентификаторов. Сначала я думал, что этобыл бы слишком обременительным. Прочитав ответ дракона, я переделал свое приложение. К моему удивлению, теперь все выглядит намного проще. Дополнительные преимущества в том, что мои объекты будут использовать меньше места, и я выиграл »Не нужны дополнительные индексы.

Ответы на вопрос(4)

Ваш ответ на вопрос