Фильтр запросов Django с переменным столбцом - PullRequest
50 голосов
/ 18 января 2011

Я пытаюсь отфильтровать набор запросов, используя

info=members.filter(name__contains=search_string)

Проблема, с которой я столкнулся, заключается в том, что я не знаю, какое поле пользователь хочет искать заранее, поэтому мне нужно заменить «имя» на переменную, как в

variable_column = 'name'
search_type = 'contains'
filter = variable_column + '__' + search_type
info=members.filter(filter=search_string)

Как мне это сделать?

Rich

1 Ответ

131 голосов
/ 18 января 2011

Почти там ..

members.filter(**{'string__contains': 'search_string'})

Чтобы понять, что он делает, поглядите в: :) Понимание kwargs в Python

** расширяет пары словарь / значение словаря до пар «ключевое слово - значение».

Чтобы адаптировать ваш пример к решению:

variable_column = 'name'
search_type = 'contains'
filter = variable_column + '__' + search_type
info=members.filter(**{ filter: search_string })
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...