Мои приключения с группами сущностей продолжаются после слегка смущающего начала (см. При некоторых обстоятельствах вызов App Engine get_by_key_name
с использованием существующего имени_ключа возвращает None ).
Теперь я вижу, что не могу сделать обычный вызов get_by_key_name
для списка сущностей для дочерних сущностей, которые имеют более одной родительской сущности. Как говорят в Документах модели,
Несколько объектов, запрошенных одним
(get_by_key_name
) вызов должен иметь все
тот же родитель.
У меня появилась привычка делать что-то вроде следующего:
# Model just has the basic properties
entities = Model.get_by_key_name(key_names)
# ContentModel has all the text and blob properties for Model
content_entities = ContentModel.get_by_key_name(content_key_names)
for entity, content_entity in zip(entities, content_entities):
# do some stuff
Теперь, когда сущности ContentModel являются дочерними для сущностей модели, это не будет работать из-за требования одного родителя.
Простой способ включить описанный выше сценарий с группами объектов - это возможность передать список родителей на вызов get_by_key_name
, но я предполагаю, что есть веская причина, почему это в настоящее время невозможно. Я задаюсь вопросом, является ли это жестким правилом (так как такой вызов не может работать вообще) или модуль db мог бы быть изменен так, чтобы этот тип вызова работал, даже если бы это означало большую загрузку ЦП расходы.
Мне бы тоже очень хотелось посмотреть, как другие решают такую задачу. Я могу придумать несколько способов справиться с этим, например, использовать GQL-запросы, но ни один из них не может приблизиться к производительности вызова get_by_key_name
.