2011-01-24 7 views
12

Djangoにクエリの結果をより使いやすい形式に戻す便利なヘルパーがあるかどうか疑問に思っていたので、私の見解でそれらを繰り返し処理する必要はありません。Django - クエリ結果は 'associative' dictですか?

私はこのようなクエリがあります。

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'は上記のフィルタクエリを実行するマネージャ関数です。どのように私はこれを行うかもしれない任意のアイデア?私は設定マネージャーで結果を反復することに反対しません。なぜなら、後でそれらを保存することができるからです...私は、グローバルなモデル変数を作成する方法をかなり理解できませんでした。

ご協力いただければ幸いです!

答えて

27

あなたはむしろvaluesよりvalues_listを使用している場合、それはあなたがして辞書を作成するために、dict()に渡すことができ、二組のセットを返します。

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

私は、あなたが探しているものだと思います:http://docs.djangoproject.com/en/1.2/ref/models/querysets/#in-bulk この関数は、主キーのリストを取り、そのキーにマップされたモデルの辞書を返します。これはまさにあなたが望むものなのでしょうか?

+0

更新されたリンク:https://docs.djangoproject.com/en/1.11/ref/models/querysets/#in-bulk – tufelkinder

関連する問題