0

Buildingというモデルを参考にして というモデルを作成しましたOffice。Proto REST Query でBuildingsをフィルタリングしたい( ....)OfficeID@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
4

1 に答える 1

0

建物→オフィスは1対1の関係のようです(逆にオフィス→建物は多対1の関係です。

そのため、オフィス ID をクエリ用のキャッシュ プロパティとして建物に保存する必要があります。

次に、特定のオフィス ID を持つ建物を照会できます。

または、キーが office_key == 'some office key') に保持されているすべての建物を照会します。

于 2016-02-07T02:26:43.197 に答える