Имя динамической переменной в python - PullRequest
4 голосов
/ 02 апреля 2010

Я бы хотел вызвать запрос с фильтром имен полей, который я не знаю до времени выполнения ... Не уверен, как создать имя переменной ... Или, может быть, я устал.

field_name = funct()
locations = Locations.objects.filter(field_name__lte=arg1)

где, если funct () возвращает имя, будет равно

locations = Locations.objects.filter(name__lte=arg1)

Не уверен, как это сделать ...

1 Ответ

10 голосов
/ 02 апреля 2010

Вы можете создать словарь, установить параметры и передать его функции, распаковав словарь в качестве аргументов ключевого слова :

field_name = funct()
params = {field_name + '__lte': arg1,       # field_name should still contain string
          'some_other_field_name': arg2}

locations = Locations.objects.filter(**params)

# is the same as (assuming field_name = 'some_name'):
# Locations.objects.filter(some_name__lte=arg1, some_other_field_name=arg2)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...