"гибкий" запрос в Django ORM
Пытаюсь написать гибкий запрос к БД, в который можно вставлять фильтры из формы, полученной на сайте. То есть количество фильтров может изменятся. Приведу пример запроса:
data = Transactions.objects.values_list(
'number', 'number__lego__title',
'number__shop__city__city', 'option__options',
'number__logistic_company', 'number__deadlines',
'number__shop__telephone', 'number__regularity__regularity'
).filter('Изменяемая часть фильтров').order_by('Изменяемое количество полей')
Искал методы реализации, но решений не нашел. Есть ли способ составить такой запрос, если есть, то как он должен выглядеть?
Используйте переменное число позиционных и именованных агрументов при вызове функции:
filters = {}
filters['number'] = '123'
filters['number__lego__title'] = 'abc'
filters['some_numeric_field__gt'] = 5
order = []
order.append('number')
order.append('-number__lego__title')
data = Transactions.objects.values_list(
'number', 'number__lego__title',
'number__shop__city__city', 'option__options',
'number__logistic_company', 'number__deadlines',
'number__shop__telephone', 'number__regularity__regularity'
).filter(**filters).order_by(*order)