Как я могу выполнить запрос по предку в соответствии с user_id, который я получаю из токена?EndPointsModel query by ancestor
Это мой код:
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. Я не хочу использовать решение, чтобы добавить владельца поля в мою модель, потому что запрос-предок быстрее, чем фильтры, и это действительно помогает мне организовать мой db.
Спасибо
Ладно, спасибо, но я имею в виду если есть способ использовать запрос EndPointModel и просто «обновить» его или создать вид фильтров для запроса предков, а не создавать новый ... –
я не полностью отказался сравните свой комментарий выше. не могли бы вы объяснить? –
В методе list_model я получаю в качестве параметра объект-запрос, уже созданный фильтрами, которые я упоминал в декораторе. Я хочу, чтобы из этого запроса были получены только строки, являющиеся дочерними элементами предка «myancestorkey», а не для создания нового запроса. –