0

Я создал модель под названием Building со ссылкой на модель под названием Office. Я хотел бы, чтобы отфильтровать Building комиссионка OfficeID в прото REST Query (@Building.query_method ....)GAE NDB с конечными точками Proto Datastore: фильтр по ID ссылочного свойства

В настоящее время я работаю с office_key собственности (необходимо ввести Entity Ключ 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 

ответ

0

Оказывается, что здание -> Офис является отношение один к одному (и наоборот отношения офиса -> здание многие к одному

.

Так что вам нужно, чтобы сохранить офис идентификатор в здании, кэшированная собственности для запроса.

Тогда вы можете запросить для зданий с определенным идентификатором офиса.

Альтернативный запрос для всех зданий, которые ключ хранится в office_key == 'некоторый офисный ключ')

Смежные вопросы