Ответ 1
Если вы используете values_list
, а не values
, он вернет набор из двух кортежей, который затем можно перейти к dict()
, чтобы создать словарь:
return dict(self.filter(key__in=keys).values_list('key','value'))
Мне было интересно, есть ли какие-нибудь удобные помощники в 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' - это функция менеджера, которая запускает указанный выше запрос фильтра. Любая идея, как я могу это сделать? Я бы не стал против повторения результатов в диспетчере настроек, потому что я мог хранить их позже... Я не мог понять, как создать глобальную модельную переменную.
Любая помощь будет принята с благодарностью!
Если вы используете values_list
, а не values
, он вернет набор из двух кортежей, который затем можно перейти к dict()
, чтобы создать словарь:
return dict(self.filter(key__in=keys).values_list('key','value'))
Я думаю, что вы ищете: http://docs.djangoproject.com/en/1.2/ref/models/querysets/#in-bulk Эта функция принимает список первичных ключей и возвращает словарь моделей, сопоставленных с ключами. Кажется, это именно то, что вы хотите?