Оптимизация динамического фильтра

У меня есть эта функция

 def get_documents_by_metadata(self, params):
    filters = {}
    result_filtered = None
    for index, key in enumerate(params.keys()):
        filters["metadocument__meta_config__field"] = key
        filters["metadocument__value__contains"] = params.get(key)
        if index == 0:
            result_filtered = super().get_queryset().filter(**filters)
        else:
            result_filtered = result_filtered.filter(**filters)

    return result_filtered

Мне нужно фильтровать по динамическим значениям (метаданные KEY/VALUE, зарегистрированные в моей БД), я не могу предсказать, какие ключи я получу.

Моя первая идея - фильтровать и снова фильтровать результат, но я уверен, что существует лучший способ.

Ty!

Вернуться на верх