我正在尝试使用'POST'请求在GAE中填充包含ndb.Structured Property()的数据存储模型。
此问题最近被提出但未得到回答(How to “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)
从客户发布后,我收到以下error:
AttributeError: 'Check' object has no attribute '_Message__decoded_fields'
从我对端点 - proto-datastore模块的高级理解看来,当json被解码并保存到传入消息(utils.py第431行)时,它不会检查结构化/本地化结构属性并保存他们的密钥也是好的和花花公子直到FromValue(ndb / model.py第115行)检查结构化属性的实例并尝试递归地将结构化属性从protorpc消息转换为模型实体(需要_Message__decoded_fields)。
Sasxa (参见上面的链接)通过使用转换为ProtoRPC消息类的EndpointsAliasProperty来绕过端点 - proto-datastore将structuredproperty自动转换为其中,找到了一个非常好的解决方法。相关的模型实体,但这种解决方法有一些副作用,使我试图做的事情变得困难。
有没有人知道如何正确使用'POST'请求填充包含StructuredProperty的数据存储模型,是否有任何可用的工作示例?