1
我如何根據從令牌獲得的user_id來查詢祖先?祖先的EndPointsModel查詢
這是我的代碼:
class MyUserClass(EndPointModel):
user_object = ndb.UserProperty(required=True, indexed=False)
class MyModel(EndPointModel):
...
@MyModel.method(user_required=True, name="model.add", path="model")
def add_mymodel(self, my_model):
gplus_user_id = auth_util.get_google_plus_user_id()
if gplus_user_id is None:
raise endpoints.ForbiddenException(NidAppUser.NO_GPLUS_ID)
user = MyUserClass.get_or_insert(gplus_user_id, user_object=endpoints.get_current_user())
my_model.parent = user.key.string_id()
my_model.put()
return my_model
@MyModel.query_method(user_required=True, name="list.mymodel", path="models",
query_fields=('order','attr1',))
def list_models(self, query):
gplus_user_id = auth_util.get_google_plus_user_id()
if gplus_user_id is None:
raise endpoints.ForbiddenException(NidAppUser.NO_GPLUS_ID)
## Here or in thsi decorator function I want to do something like
## query.ancestor.(ndb.Key(MyClassUser, gplus_user_id)) (such as the DB Datastore)
## to return only the query of MyModels that belong to the current user
return query
,我需要通過MyUserClass密鑰的密鑰創建查詢祖先。我不想使用該解決方案在我的模型中添加字段所有者,因爲查詢祖先比過濾器更快,並且它確實幫助我組織我的數據庫。
謝謝
好吧,謝謝你,但我的意思是如果有一種方法可以使用EndPointModel的查詢,只是爲了「更新」它或爲祖先查詢創建一種過濾器,而不是創建一個新的... –
我沒有完全unde rstand你的上面的評論。你能解釋一下嗎? –
在list_model方法中,我使用我在裝飾器中提到的過濾器創建的對象查詢作爲參數。我想從這個查詢中獲取祖先「myancestorkey」的子級行,而不是創建一個新的查詢。 –