使用endpoints-proto-datastore按ID插入相关对象

时间:2014-10-27 19:39:11

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

我正在尝试插入Category对象,但我喜欢使用Store ID将Category链接到Store。该ID由endpoints-proto-datastore提供。我怎么能这样做?

实际上,要保存类别,API需要类别名称和商店密钥。

这是我的api方法:

@Category.method(user_required=True, 
                request_fields=('name'), 
                path='{store}/categories', 
                http_method='POST', 
                name='categories.insert')
def insertCategory(self, category):
    """
    Insert a category in a existing store.
    """
    category.put()
    return category

这是我的分类模型:

class Category(EndpointsModel):
    _message_fields_schema = ('id', 'name', 'store')
    name = ndb.StringProperty(required=True)
    store = ndb.KeyProperty(Store)

这是我的商店模型:

class Store(EndpointsModel):
    _message_fields_schema = ('id', 'name')
     name = ndb.StringProperty(required=True)  

1 个答案:

答案 0 :(得分:0)

假设您已经拥有要包含在Category实体中的Store实体,请确保使用Store key实体而不是id。您可以在数据存储区查看器(旧版本)中找到关键实体。

如果您添加了entityKey默认属性,那么您可以获取实体查询中的密钥。

class Store(EndpointsModel):
    _message_fields_schema = ('id', 'entityKey', 'name')
    name = ndb.StringProperty(required=True)