【问题标题】:Why is django slow to generate select boxes for foreign keys?为什么 django 为外键生成选择框很慢?
【发布时间】:2010-10-21 19:32:12
【问题描述】:

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

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

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

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

【问题讨论】:

    标签: django django-admin


    【解决方案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

    【讨论】:

      【解决方案2】:

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

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

      【讨论】:

      • 它是 600KB,所以看起来可以解释它。谢谢。
      猜你喜欢
      • 2014-12-02
      • 1970-01-01
      • 1970-01-01
      • 2020-05-07
      • 2011-03-30
      • 2021-10-31
      • 1970-01-01
      • 2020-08-13
      • 2019-10-02
      相关资源
      最近更新 更多