带端点Proto数据存储区的GAE NDB:如何格式化引用属性的响应字段?

时间:2016-02-29 23:18:47

标签: python google-app-engine google-cloud-endpoints endpoints-proto-datastore

我在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属性仅适用于定义父实体字段(Building),但如何限制子实体的字段?

以下是我在JSON中的回复消息:

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

我想从Office对象中删除一些字段(即field1,field2等)以减少JSON响应大小。 定义有限_message_fields_schema的{​​{1}}对象不是一个好方法,因为它可以全局工作。我想只格式化这个查询。

1 个答案:

答案 0 :(得分:1)

您可以在EndpointsAliasProperty模型中创建Building,您可以在其中转换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