I am trying to interface with mongoengine and extract out posts based on different inputs. At first I was simply running a for loop with a modulatory query and running said query every time. However following reading, I feel a more efficient way would be to perform the query using the | operand and running the query once. I can do this simply if the query is static but as the number of items to be filtered could vary, I am trying to setup a more dynamic approach
current code setup
console_list = []
for console in console_list:
query = Q(**{f'{console}__company': company_name})
console_list .extend(console_document.objects(query))
I attempted the following with great success
query = Q(**{f'Dreamcast__company': company_name}) | Q(**{f'Playstation__company': company_name})
console_list .extend(console_document.objects(query))
but when it comes to building this I receive an error
query = Q(**{f'{console}__company': company_name})
for idx, console in enumerate(console_list):
if idx==0:
continue
query += Q(**{f'{console}__company': company_name})
the error states
TypeError: unsupported operand type(s) for +=: 'QCombination' and 'Q'
which tells me that string comprehension with join will also not work. So how to dynamically generate these Qcombinations?