На самом деле, способ, которым вы защищаете доступ к ключу для ReferenceProperty, вполне может не существовать в будущем. Атрибуты, которые начинаются с '_' в python, как правило, считаются "защищенными" в том смысле, что вещи, которые тесно связаны и тесно связаны с их реализацией, могут их использовать, но вещи, которые обновляются с реализацией, должны меняться при ее изменении.
Однако через открытый интерфейс можно получить доступ к ключу для вашего ссылочного свойства, чтобы оно было в безопасности в будущем. Я пересмотрю приведенный выше пример:
class Comment(db.Model):
series = db.ReferenceProperty(reference_class=Series);
def series_id(self):
return Comment.series.get_value_for_datastore(self)
Когда вы обращаетесь к свойствам через класс, с которым он связан, вы получаете сам объект свойства, у которого есть открытый метод, который может получить базовые значения.