Как использовать запрос NDB, не зная имени класса

Я пишу приложение Python на Google App Engine, и мне нужен запрос ndb, но проблема в том, что запрос может относиться к разным типам классов, поэтому я ищу другой метод, кроме clss.Query(). Мне нужно, чтобы clss была переменной. Могу ли я использовать с этим фильтр?


person Community    schedule 29.11.2015    source источник


Ответы (1)


На самом деле есть способ сделать это, упомянутый в документация:

from google.appengine.ext import ndb
ndb.Query(kind=clss)

Вы также можете использовать фильтры, передав фильтр в качестве параметра в запросе:

ndb.Query(kind=clss, filters=...)

или применив filter() к запросу, как обычно:

ndb.Query(kind=clss).filter()
person Y2H    schedule 29.11.2015
comment
Отлично, за исключением того, что, если clss является переменной, как указано в OP, вы обязательно должны потерять используемые кавычки - kind=clss правильно, не kind="clss" там, где кавычки превратит RHS в постоянную буквальную строку! Пожалуйста, исправьте это большое упс (в трех местах) в своем во всем остальном превосходном ответе ... - person Alex Martelli; 30.11.2015
comment
@Alex Martelli, спасибо за замечание, но я предполагал, что спрашивающий поймет это. Я постараюсь прояснить это. - person Y2H; 30.11.2015