Разместить ndb StructuredProperty _Message__decoded_fields

Моя проблема:

Я пытаюсь заполнить модель хранилища данных в GAE, которая содержит свойство ndb.Structured (), используя запрос POST.

Этот вопрос был задан недавно, но не ответил (Как «ПОСТ» ndb.StructuredProperty?)

У меня есть следующие две модели:

class Check(EndpointsModel):
    this = ndb.StringProperty()
    that = ndb.StringProperty()

class CheckMessage(EndpointsModel):
    check = ndb.StructuredProperty(Check)

Я пытаюсь опубликовать эти данные:

{
    check:
    {
        "this":"test",
        "that":"test"
    }
}

со следующим запросом API:

@CheckMessage.method(name='check_insert',path='check/insert',http_method='POST')
    def check_insert(self,request):
        print(request)

После публикации от клиента я получаю следующееошибка:

AttributeError: 'Check' object has no attribute '_Message__decoded_fields'
Проблема:

Из моего очень высокого уровня понимания модуля endpoints-proto-datastore кажется, что когда json декодируется и сохраняется во входящем сообщении (utils.py строка 431), он не проверяет структурированные / локально структурированные свойства и сохраняет их ключи как хорошо, что все в порядке, пока FromValue (строка ndb / model.py 115) не проверяет экземпляры структурированных свойств и не пытается рекурсивно преобразовать структурированное свойство из сообщения protorpc в объект модели (для которого требуется _Message__decoded_fields).

Sasxa (см. ссылку выше) нашел изящный маленький обходной путь для этой проблемы, используя EndpointsAliasProperty, преобразованный в класс сообщений ProtoRPC, чтобы обойти автоматическое преобразование endpoints-proto-datastore свойства structd в ассоциированную сущность модели, однако этот обходной путь имел некоторые побочные эффекты это затрудняло то, что я пытался сделать.

Вопрос:

Кто-нибудь знает какправильно заполнить модель хранилища данных, содержащую StructuredProperty, используя запрос «POST», и есть ли рабочие примеры этого?

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

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