数以千计的选项提高外键字段的加载性能

时间:2018-06-30 07:05:21

标签: django django-forms

我的情况与this post类似,在外键字段中有成千上万的条目,因此页面加载速度很慢。

在modelform上,有没有一种方法可以在保持下拉菜单功能的同时改善页面加载?我已经使用select2来有效地在下拉菜单中找到所选项目,因此想保留此功能。

1 个答案:

答案 0 :(得分:0)

Django必须从数据库中获取所有这些外键对象,然后将它们呈现为HTML。这就是为什么要花费很多时间的原因。如果您缓存所有内容,从数据库中获取数据可能会很快,但是呈现为HTML仍然是一个问题。

这是我认为效果最好的解决方案:

  1. 从您的表单中排除该ForeignKey字段。
  2. 相反,只需创建一个空白输入字段。您必须通过JavaScript捕获用户的输入,并将该值发送给支持者以获取建议。实际上,select2 supports fetching data from backend via AJAX因此,您的工作已完成一半。
  3. 创建一个将接收该AJAX请求的视图,并在数据库中搜索建议并将其发送回客户端。

您已完成。