Подтвердить что ты не робот

Django - Результаты запроса как "ассоциативный" dict?

Мне было интересно, есть ли какие-нибудь удобные помощники в Django, которые вернут результаты запроса в более "удобный" формат, поэтому мне не нужно проходить через них по моему мнению.

У меня есть такой запрос:

self.filter(key__in=keys).values('key','value')

То, что я хочу закончить, - это объект, который выглядит как

{'some_key':'some value', 'some_other_key':'some_other_value'}

Итак, в моей модели я мог бы сделать что-то вроде этого:

settings = Setting.objects.get_keys(['some_setting','some_other_setting'])
print settings.some_setting # returns 'some value'

Где 'get_keys' - это функция менеджера, которая запускает указанный выше запрос фильтра. Любая идея, как я могу это сделать? Я бы не стал против повторения результатов в диспетчере настроек, потому что я мог хранить их позже... Я не мог понять, как создать глобальную модельную переменную.

Любая помощь будет принята с благодарностью!

4b9b3361

Ответ 1

Если вы используете values_list, а не values, он вернет набор из двух кортежей, который затем можно перейти к dict(), чтобы создать словарь:

return dict(self.filter(key__in=keys).values_list('key','value'))

Ответ 2

Я думаю, что вы ищете: http://docs.djangoproject.com/en/1.2/ref/models/querysets/#in-bulk Эта функция принимает список первичных ключей и возвращает словарь моделей, сопоставленных с ключами. Кажется, это именно то, что вы хотите?