2011-07-20 8 views
0

辞書のマッピングPKをin_bulk()関数のようにモデルのインスタンスに取得する最良の方法はありますが、与えられたクラス(モデル)のすべてのオブジェクトに対してです。私は、SQLクエリの数を最小限に抑えたい。すべてのdjangoモデルをバルクで割り当てる

+0

'in_bulk'が悪いのか? – sneeu

+0

右。しかし、まず、私は1つのSQLクエリを取るすべてのpksを取得する必要があります。私はin_bulk()よりも可能です。しかし、これは膨大なクエリを生成します。私はもっ​​と良いものがあると思った。 – santino

+0

ああ、以下の私の答えを見てください。 – sneeu

答えて

1

dict試してみてください、とリスト内包:

model_instances = Model.objects.filter(...) 
in_bulk_style_model_instances = dict([(m.pk, m) for m in model_instances]) 
+2

入れ子リストcompのポイントが表示されません。なぜ単に 'dict(m_pk、m)をmodel_instancesに入れるのではないでしょうか? ' –

+0

ダニエル大丈夫、古い習慣だと思います。 – sneeu

+0

Python 2.7以降では、dict()よりもはるかに効率的な辞書の解読構文があります。{model.instancesのm.pk:m} http://doughellmann.com/2012/11/the- cpythonの代わりにパフォーマンスの影響を与える使用2-7-2.html Do not – trojjer

関連する問題