我有一个管理视图,其中包含四个外键,每个外键都有几千个条目。它在浏览器中显示得很慢。
如果我通过添加raw_id_fields来改变django模型以消除选择框,那么事情变得美好而且活泼。所以缓慢是由于选择下降的人口,这也是一个已知问题,因为这就是raw_id_fields存在的原因。
我想了解造成这种缓慢的原因。在服务器上,如果我对用于填充选择框的数据执行SQL查询,则结果是即时的。所以Postgres检索或排序数据不是原因。
也许这是传输填充下拉数据所需的时间?或者django正在做什么?
答案 0 :(得分:8)
转移巨大的选择列表确实需要花费很多时间。标记可以真正开始加起来。尝试检查您的html输出有多大KB / MB。我记得曾经看到一个选择列表(几千个条目)膨胀一个页面,在之前的工作中最多可达5兆字节。这是一个ASP.NET项目;当你遇到这样的问题时,你正在使用什么框架并不重要。
我不确定django管理工具是否可以执行此操作,但听起来您确实需要一个多级选择列表来深入查看结果,而不是立即将每个选项发送到客户端。
答案 1 :(得分:1)
要做的第一件事是在您的网站上实施gzip,这会将响应的大小减少至少一半。
然后,如果它仍然非常慢,可以查看某种类型的ajax自动建议类型小部件来处理选择正确的值。看起来有一些记录在案的解决方案:http://www.google.com/#hl=en&q=django+autocomplete+widget&btnG=Google+Search&aq=1&oq=django+autocomplete+widget&fp=jFFhzb_S4-4