2013-03-21 38 views
2

Django的选择领域,使用选择的部件,将渲染出无限数量的<option>元素。这当然需要很长时间,并且在有数百种选择的情况下浪费大量的内存。当涉及到外键时,可以使用类似于contrib.adminraw_id_fields的东西,但是在硬编码值的情况下(例如,全世界的所有subdivisions可以从pycountry中选择),我不确定除外)A)使用AJAX提供一个列表(仍然有很多值需要输出)或B)使用小部件的char字段,允许表单验证错误的输入。Django的选择领域有很多选择 - 是否有一个简单的解决方案是有效的?

是否有不涉及上述一个选项,甚至是一个很简单的最佳做法|清洁|可插拔这确实涉及选项一个

+0

这已经炸毁了我的网站在几个不同的层次上:第一,由于DOM元素太多,浏览器开始崩溃,然后,在数据库中更多FK之后,服务器耗尽内存。 – 2013-03-21 01:05:45

+0

@ Yuji'Tomita'Tomita - 正好。我仍然记得我公司的10台服务器因为有人忘记将'raw_id_fields'添加到具有FK的管理员到'User'(其中有超过400万条记录)而被迫停下来的2次。呃 – orokusaki 2013-03-21 01:11:21

回答

1

我曾经有同样的问题,在我看来,处理这个问题的最好方法是使用自动填充字段。这就像一个文本字段,但用户在该文本输入中写入选项时会获得选项。

这比简单的文本字段更好,因为您不必验证值是否正确:您只能选择一个有效的值。

我尝试一些应用程序,以便有自动完成和适合我的需求是对此最好的:

https://github.com/yourlabs/django-autocomplete-light

希望它能帮助!

相关问题