带有 Endpoints Proto Datastore 的 GAE NDB:按引用 ID 筛选 属性
GAE NDB with Endpoints Proto Datastore: filter by ID of reference property
我参考了一个名为 Office
的模型创建了一个名为 Building
的模型。我想在 Proto REST 查询中通过 OfficeID
过滤 Building
s (@Building.query_method
....)
目前,我使用 office_key
属性(需要输入 Office 实体密钥),但我想按 OfficeID
属性 进行过滤。关于如何做到这一点的任何想法?
这是我到目前为止尝试过的方法:
class Building(EndpointsModel):
_message_fields_schema = ('id', 'name', 'office')
name = ndb.StringProperty(default=None, indexed=True)
office_key = ndb.KeyProperty(kind=Office, required=False)
def office_setter(self, value):
self.office_key = ndb.Key('Office', value.id)
@EndpointsAliasProperty(setter=office_setter, property_type=Office.ProtoModel())
def office(self):
return self.office_key.get()
class Office(EndpointsModel):
_message_fields_schema = ('id', 'name', 'created_date')
name = ndb.StringProperty(default=None, indexed=True)
created_date = ndb.DateTimeProperty(auto_now_add=True)
@Building.query_method(query_fields=('limit', 'order', 'pageToken', 'office_key'), path='buildings', name='list')
def List(self, query):
return query
看起来 Building -> Office 是一对一的关系(相反 office -> building 的关系是多对一的。
因此您需要将建筑物中的办公室 ID 作为缓存 属性 存储以供查询。
然后您可以查询具有特定办公室 ID 的建筑物。
交替查询密钥在 office_key == 'some office key')
中的所有建筑物
我参考了一个名为 Office
的模型创建了一个名为 Building
的模型。我想在 Proto REST 查询中通过 OfficeID
过滤 Building
s (@Building.query_method
....)
目前,我使用 office_key
属性(需要输入 Office 实体密钥),但我想按 OfficeID
属性 进行过滤。关于如何做到这一点的任何想法?
这是我到目前为止尝试过的方法:
class Building(EndpointsModel):
_message_fields_schema = ('id', 'name', 'office')
name = ndb.StringProperty(default=None, indexed=True)
office_key = ndb.KeyProperty(kind=Office, required=False)
def office_setter(self, value):
self.office_key = ndb.Key('Office', value.id)
@EndpointsAliasProperty(setter=office_setter, property_type=Office.ProtoModel())
def office(self):
return self.office_key.get()
class Office(EndpointsModel):
_message_fields_schema = ('id', 'name', 'created_date')
name = ndb.StringProperty(default=None, indexed=True)
created_date = ndb.DateTimeProperty(auto_now_add=True)
@Building.query_method(query_fields=('limit', 'order', 'pageToken', 'office_key'), path='buildings', name='list')
def List(self, query):
return query
看起来 Building -> Office 是一对一的关系(相反 office -> building 的关系是多对一的。
因此您需要将建筑物中的办公室 ID 作为缓存 属性 存储以供查询。
然后您可以查询具有特定办公室 ID 的建筑物。
交替查询密钥在 office_key == 'some office key')
中的所有建筑物