3

我有一个管理视图,其中包含四个外键,每个外键有几千个条目。在浏览器中出现很慢。

如果我更改 django 模型以通过添加 raw_id_fields 来消除选择框,事情就会变得漂亮而活泼。所以缓慢是由于选择下拉列表的数量,这也是一个已知问题,因为这就是 raw_id_fields 存在的原因。

我想了解导致缓慢的原因。在服务器上,如果我对用于填充选择框的数据进行 SQL 查询,结果是即时的。所以 Postgres 检索或排序数据不是原因。

也许是传输填充下拉列表的数据所需的时间?还是 django 正在做的事情?

4

2 回答 2

8

传输庞大的选择列表确实需要相当多的时间。标记真的可以开始加起来了。尝试检查您的 html 输出的 KB/MB 大小。我记得有一次看到一个选择列表(几个 1000 个条目)在以前的工作中使页面膨胀到 5 兆字节左右。这是一个 ASP.NET 项目;当你遇到这样的问题时,你使用什么框架并不重要。

我不确定 django 管理工具是否可以做到这一点,但听起来您确实需要一个多级选择列表来深入了解结果,而不是一次将每个选项发送给客户端。

于 2009-04-25T17:33:34.670 回答
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

于 2009-04-27T18:50:45.200 回答