계산 된 속성을 쿼리하는 방법은 무엇입니까? 이 경우 query
에서 query_method에서 ComputedProperty를 필터링하는 방법은 무엇입니까?
class MyModel(EndpointsModel):
attr1 = ndb.IntegerProperty(default=0)
@EndpointsComputedProperty(property_type=messages.BooleanField)
def attr2(self):
return self.attr1 % 2 == 1
@endpoints.api(name='myapi', version='v1', description='My Little API')
class MyApi(remote.Service):
@MyModel.query_method(query_fields=('attr2'),
path='mymodels', name='mymodel.list')
def MyModelList(self, query):
return query
항상
attr2 == False
을 테스트하는 필터를해야합니다.
원인은 필터가 FromMessage
으로 만든 엔티티에서 생성 된 것 같습니다. attr2
은 계산 된 속성이므로 설정할 수 없습니다. 0-attr1
기본값으로, attr2
에 관계없이 항상에 전달되는 거짓입니다
쿼리하려는 경우 계산 된 속성이 아니어야합니다. "수행"하는 유일한 방법은 모든 엔터티를 검색 한 다음 계산 된 속성을 확인하는 것입니다. Khan Academy가 읽는 시간보다는 쓰기 시간에 값 비싼 물건을 꺼내는 것에 대해 작성한 자료 중 일부를 읽어야합니다. – bossylobster
@bossylobster 사실, 쿼리하고 싶다면 ComputedProperty 여야합니다. 'ComputedProperty'의 전체적인 요점은 계산시 값을 데이터 저장소에 쓰기 시간에 저장한다는 것입니다. 당신이 설명하는 시나리오는 일반적인'@ 속성 '의 경우 일 것이다. MyModel.query (MyModel.attr2 == True)는 예상대로 행복하게 작동합니다. MyModel.query_method는 읽기 전용 속성 (예 : ComputedProperty)을 설정할 수 없으므로 예기치 않은 동작을 보여 주지만 필터에서 행복하게 사용합니다. – sstriker
사과, 별칭 속성에 대해 생각하고있었습니다. – bossylobster