У меня есть список встроенных документов, которые я создаю, используя наследование. Поэтому из-за наследования некоторые поля могут существовать не во всех встроенных документах. Я пробовал следующее:
СЛУЧАЙ 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'. Это ошибка или я что-то не так делаю?