优化Django:批量获取模型信息..?

Chr*_*ris 0 django optimization

在Django视图中我正在做这样的事情..

lists = Stuff.objects.exclude(model2=None)
for alist in lists:                        
     if alist.model2.model3.id == target_id:
          addSomeStuff
Run Code Online (Sandbox Code Playgroud)

缓慢来自于从if语句中的模型(数据库行)到模型.
当列表中只有大约486个项目时,这实际上需要几秒钟才能运行.我认为这很慢,因为正在执行486*2 + 1 db查找.如果我在哪里重写它,那么它立刻抓住了整个model2表和model3表,然后只是在那里过滤,它将是3分贝命中,我相信它会更快.这会破坏django所做的所有好处.

有没有办法说服django做这样的批量数据查找?

Ale*_*nor 5

Stuff.objects.exclude(model2=None).select_related('model2')
Run Code Online (Sandbox Code Playgroud)

并做

if alist.model2.model3_id == target_id
Run Code Online (Sandbox Code Playgroud)

这些应该将它切成1个SQL查询.