Как я могу получить ndb.Model, когда мой единственный вход – ndb.Query?

Предположим, что ndb.Model выглядит так:

 class Foo(ndb.Model): bar = ndb.StringProperty() 

Мой вопрос: если мой единственный вход – это Foo.query() как я могу получить модель как объект, к которому принадлежит этот запрос?

 def query_to_model(query): # some magic return model 

Foo.query().kind возвращает имя модели в виде строки, но мне не удалось найти способ получить ее как объект.

Следующие действия используются с использованием eval , но только тогда, когда модель определена в том же файле:

 def query_to_model(query): return eval(query.kind) 

Я хочу нечто более общее, чем это.

2 Solutions collect form web for “Как я могу получить ndb.Model, когда мой единственный вход – ndb.Query?”

После того, как вы импортировали код с этим определением модели, список ndb.Model._kind_map должен содержать его. Вот волшебство:

 def query_to_model(query): return ndb.Model._kind_map[query.name] 

Я использую этот код для поиска класса модели, если у вас есть имя вида:

 model_module = KIND_MODULES(kind_name) mod = __import__(model_module, globals(), locals(), [kind_name], -1) model_class = getattr(mod, kind_name) 

Модули KIND Modules dict содержат модули для импорта моделей из:

 KIND_MODULES = { 'Users' : 'models', 'Comments' : 'models', 'Cities' : 'examples.models' } 
  • Не удается остановить веб-сервер в Google App Engine Launcher
  • TypeError on freebusy вызывает API Google Calendar v3 с использованием apiclient Python
  • Как я могу использовать bulkuploader для заполнения класса с помощью db.SelfReferenceProperty?
  • Appengine - Обновление со стандартного DB до NDB - ReferenceProperties
  • Как получить изображение и сохранить в blobstore?
  • имеет любой простой способ получить полный url, используя python on gae
  • Определение общих файлов для проектов GAE
  • urlib.py не работает с https?
  • Как мне настроить процесс разработки TDD с помощью Google App Engine?
  • как организовать файлы с помощью python27 app engine webapp2 framework
  • Пытается найти чистый целочисленный решатель линейного программирования на основе python с неравенствами
  •  
    Interesting Posts for Van-Lav

    как установить numpy и pandas на windows

    Как создать вращающийся курсор командной строки с помощью python?

    «OSError: dlopen (libSystem.dylib, 6): изображение не найдено» (OS X + macports + Celery 3.1.7)

    Mechanize + Python: как следовать ссылке в простом javascript?

    Следить за родительскими элементами с помощью ElementTree

    Доступ к серверу Flask с моей веб-страницы

    Развертывание Python и зависимостей от эластичного бобового стебля

    Celery Beat: ограничение на единицу задания одновременно

    разброс участков в морском / matplotlib с размером и цветом точки, заданной непрерывной колонкой данных

    Есть ли способ контролировать, как pytest-xdist запускает тесты параллельно?

    Несколько одновременных сетевых подключений – сервер Telnet, Python

    Есть ли причины не смешивать модуль Multiprocessing и Threading в Python

    Пользовательские заголовки в Phantomjs Selenium WebDriver

    Шифрование и расшифровка с использованием PyCrypto AES 256

    Python 2.7 – Обработчик перенаправления не передает параметры при перенаправлении

    Python - лучший язык программирования в мире.