我有一个管理视图,其中包含四个外键,每个都有几千个条目。它在浏览器中的显示速度很慢。
如果我通过添加raw_id_fields来更改django模型以消除选择框,事情就会变得更好、更快。因此,速度慢是由于select下拉菜单的数量太多,这也是一个已知问题,因为这就是raw_id_fields存在的原因。
我想知道是什么导致了速度慢。在服务器上,如果我对用于填充选择框的数据执行SQL查询,结果是即时的。所以Postgres检索或排序数据不是原因。
也许这是传输填充下拉列表的数据所需的时间?或者是django正在做的事情?
发布于 2009-04-25 17:33:35
传输庞大的select列表确实需要相当长的时间。标记真的可以开始增加了。尝试查看您的html输出有多大( KB/MB )。我记得有一次看到一个select列表( 1000个条目)在以前的作业中使页面膨胀到5兆字节左右。这是在一个ASP.NET项目上;当你遇到这样的问题时,你使用的是什么框架并不重要。
我不确定django管理工具是否可以做到这一点,但听起来您确实需要一个多级选择列表来深入查看结果,而不是一次将每个选项都发送给客户端。
发布于 2009-04-27 18:50:45
第一件要做的事情是在你的网站上实现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
https://stackoverflow.com/questions/789240
复制相似问题