id
大文字と小文字を区別しないが大文字と小文字を保持するモデルを定義しようとしていますが、以下はほぼ機能します。
class MyModel(endpoints_ndb.EndpointsModel):
_message_fields_schema = ('id', 'name')
caseful_id = ndb.StringProperty(indexed=False)
name = ndb.StringProperty(required=True)
def IdSet(self, value):
if not isinstance(value, basestring):
raise TypeError('ID must be a string.')
self.caseful_id = value
self.UpdateFromKey(ndb.Key(self.__class__, value.lower()))
@endpoints_ndb.EndpointsAliasProperty(setter=IdSet)
def id(self):
return self.caseful_id
新しいインスタンスを作成するid
と、元の大文字と小文字が に格納されcaseful_id
、リストを取得すると元の大文字が返されますが、次の方法で特定のモデルをリクエストid
します。
@MyModel.method(request_fields=('id',), path='mymodel/{id}',
http_method='GET', name='mymodel.get')
def MyModelGet(self, mymodel):
if not mymodel.from_datastore:
raise endpoints.NotFoundException('MyModel not found.')
return mymodel
リクエストで指定されたものと同じものを、常にid
同じ大文字で返します。id
実際にゲッター関数を呼び出す方法はありますか?