带有 Endpoints Proto Datastore 的 GAE NDB:如何格式化引用 属性 的响应字段?

GAE NDB with Endpoints Proto Datastore: How to format response fields of reference property?

我在 DataStore 模型中有父子关系:Building 实体与 Office 的引用实体。我在 Building 模型上执行查询,我想在 JSON 响应中限制 Office 实体的字段。 这是我的代码:

@Building.query_method(collection_fields=('id', 'name', 'office'), path='buildings', name='list')
def List(self, query):
    return query

collection_fields 属性仅在定义父实体字段(建筑物)时效果很好,但如何限制子实体的字段?

这是我在 JSON 中的回复消息:

  {  id : 5
    name : 'building name'
    office: {
        name: 'office name',
        field1 : 'test',
        field1 : 'test',
        field1 : 'test'
    }
}

我想从 Office 对象(即 field1、field2 等)中删除一些字段以减少 JSON 响应大小。 Define limited_message_fields_schema of Office object 不是好的解决方案,因为它在全球范围内工作。我只想格式化这个查询。

您可以在 Building 模型中创建 EndpointsAliasProperty,您可以在其中转换 self.office 并在 collection_fields 中使用该值:

@EndpointsAliasProperty
def office_ltd(self):
    limited = doSomethingWith(self.office)
    return limited

@Building.query_method(collection_fields=('id', 'name', 'office_ltd'), 
                       path='buildings', name='list')
def List(self, query):
    return query