django-表单字段上的动态查询

时间:2018-08-20 20:01:53

标签: django django-forms django-templates django-views

让我们说我有一个包含一些字段的表格。我想知道是否有可能进行动态查询,以便在用户在字段中键入内容时可以进行字符串匹配。就像在google中键入内容时一样,当您在搜索栏中键入内容时,它会返回选择列表。有人可以给我一个例子,说明如何以及在何处实施它吗?

1 个答案:

答案 0 :(得分:0)

如果您要实现的是ForeignKey的字段,则可以在表单字段上提供Queryset,然后使用django_select2之类的应用程序来提供小部件这将允许用户在Queryset中搜索该字段中的项目。例如

city = forms.ModelChoiceField(
    queryset=City.objects.all(),
    label=u"City",
    widget=ModelSelect2Widget(
        model=City,
        search_fields=['name__icontains'],
        dependent_fields={'country': 'country'},
        max_results=500,
    )
)

然后在表单中,当您开始在city字段中键入内容时,它将开始使用City.name查找在icontains上进行搜索。的文档是here

如果这不是您要查找的内容,则可以编写一些Javascript来检测输入到字段的内容,然后将ajax请求发送到包含字段内容的视图。然后可以返回一个响应,该响应在与输入有关的页面中显示内容。