• Официальный сайт SDK
  • Сайт с примерами кода

Класс Key

Экземпляр класса Key представляет собой уникальный ключ некоего объекта в хранилище.

Класс Key реализован в модуле google.appengine.ext.db.

Введение

Каждый экземпляр модели, помещенный в хранилище, имеет свой уникальный ключ, сопоставленный с объектом. Метод key() экземпляра модели возвращает его объект типа Key. Если объект еще не был помещен в хранилище с помощью метода put(), вызов метода key() выдаст исключение NotSavedError.

Приложение может загрузить экземпляр класса модели заданного ключа с использованием функции get().

Экземпляры класса Key могут быть значениями свойств объекта, в том числе динамическими свойствами моделей Expando и членами списка типа ListProperty. Свойство типа ReferenceProperty в модели предоставляет возможность автоматического связывания для соответствующего значения типа Key.

Конструктор

class Key(encoded=None)

Уникальный ключ для объекта хранилища.

Ключ может быть представлен строкой путем передачи объекта типа Key функции str() (или вызовом метода __str__() самого объекта). Получаемое строковое значение содержит символы, которые допускаются стандартами к использованию к адресной строке URL. Строковое представление ключа может быть сконвертировано обратно в объект типа Key путем передачи этого значения конструктору класса Key (с параметром encoded).

Примечание: Так как строковое представление ключа может быть легко сконвертировано в его объект, это открывает возможность злоумышленнику сделать предположения о значении других ключей при известном одном. Несмотря на то, что строковые представления могут быть спокойно использованы в URL, во избежании проблем с безопасностью, приложение должно использовать их только в том случае, если выполняется обращение к общедоступным данным.

encoded
Строковое представление ключа для конвертации в соответствующий экземпляр класса Key.

Методы класса

Класс Key имеет следующий метод:

Key.from_path(*args, **kwds)

Создает новый объект типа Key при помощи пути предков, заданного с использованием одного и нескольких ключей объектов.

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

К примеру, следующий код создаст ключ для объекта типа Address с числовым идентификатором 9876, родителем которого будет объект типа User с именованным ключом 'Boris':

ayA9IEtleS5mcm9tX3BhdGgoJ1VzZXInLCAnQm9yaXMnLCAnQWRkcmVzcycsIDk4NzYp=

Параметры:

*args
Путь к корневому объекту. Каждый объект пути задается двумя элементами в списке: тип объекта и его имя или идентификатор.
**kwds
Именованные параметры. Метод поддерживает один именованный параметр - parent, который задает родительский объект, относящийся к определенному пути. Его значение может быть экземпляром модели или объектом типа Key.

Для дополнительной информации о путях к объекту, обратитесь к разделу Ключи и группы объектов.

Методы экземпляра

Экземпляр класса Key имеет следующие методы:

app()

Возвращает название приложения, которое поместило объект в хранилище.

kind()

Возвращает тип объекта данных в качестве строки.

id()

Возвращает числовой идентификатор или значение None, если объект его не имеет.

name()

Возвращает имя объекта данных или значение None, если объекту не задано имя.

id_or_name()

Возвращает имя или числовой идентификатор объекта данных или значение None, в том случае, если объект не имеет ни имени, ни числового идентификатора.

has_id_or_name()

Возвращает значение True, если объект имеет имя или числовой идентификатор.

parent()

Возвращает ключ типа Key родительского объекта или значение None, если у объекта нет родителя.