mongoengine лучший способ запросить список встроенных документов с наследованием - PullRequest
0 голосов
/ 10 ноября 2018

У меня есть список встроенных документов, которые я создаю, используя наследование. Поэтому из-за наследования некоторые поля могут существовать не во всех встроенных документах. Я пробовал следующее:

СЛУЧАЙ 1: МЕДЛЕННО (время выполнения = 2,1 с)

forms = db.Form.objects()
for form in forms:
    for element in form.elements:
        if hasattr(element, 'parameter'):
            if element.parameter == parameter:
                print(form)

Случай 2: БЫСТРО (время выполнения = 0,00014 с)

forms = db.Form.objects(elements__match={ 'parameter': parameter })

СЛУЧАЙ 3: НЕ РАБОТАЕТ!

forms = db.Form.objects(elements__parameter == parameter)

NameError: name 'elements__parameter' is not defined

Я думаю, что CASE 2 и 3 будут идентичны, однако, похоже, что __parameter не знает, как обращаться со встроенными документами, которые используют наследование и не имеют поля 'parameter'. Это ошибка или я что-то не так делаю?

...