Как передать строку по ключевому слову фильтра в Django Objects Model? - PullRequest
6 голосов
/ 27 августа 2011

Как я могу передать переменные в объекте фильтра ключевых слов в представлении?

У меня есть:

my_object = MyModel.objects.filter(my_keyword =my_filter_values)

Я хочу получить my_keyword из переменной, поступающей из строки, например:

my_string = 'my_keyword'
my_object = MyModel.objects.filter(my_string=my_filter_values)

Но это не работает, потому что Джанго не знает my_string с MyModel.

Редактировать: я нашел этот ТАК вопрос - Я проверю и сообщу.

1 Ответ

17 голосов
/ 27 августа 2011

Вы можете сделать что-то вроде этого:

my_filter = {}
my_filter[my_keyword] = my_filter_value

my_object = MyModel.objects.filter(**my_filter)

Например, ваши переменные могут быть:

my_keyword = 'price__gte'
my_filter_value = 10

Что приведет к получению всех объектов с price >= 10. И если вы хотите запросить более одного поля, вы можете просто добавить еще одну строку ниже my_filter[my_keyword]:

my_filter[my_keyword] = my_filter_value
my_filter[my_other_keyword] = my_other_filter_value
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...