Django自动完成轻型简单usag

2024-04-25 00:11:22 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图理解如何对现有项目使用django-autocomplete-light。这似乎是django的一个很好的自动完成解决方案,我已经在使用普通的ModelChoiceFields。

所以,假设我有一个名为MyModel的模型,它有一个id和一个名称。我想知道的是创建一个表单小部件的最简单的方法,它将为我提供与

mymodel = forms.ModelChoiceField(  required=True, queryset=ships.models.Authority.objects.all() , ) 

所以我可以将这个小部件添加到我想要的任何表单中,以便在不使用selec.t的情况下选择MyModel的实例

要做到这一点需要采取哪些步骤?我已经在已安装的应用程序中添加了“自动完成”和

url(r'autocomplete/', include('autocomplete_light.urls')),

到url.py和

import autocomplete_light
autocomplete_light.autodiscover()

以前

admin.autodiscover()

然而,我对下一步该做什么感到困惑

请不要在我已经彻底阅读过的文档中指我。


Tags: 项目django方法模型名称idurl表单
1条回答
网友
1楼 · 发布于 2024-04-25 00:11:22

选择小部件是ModelChoiceField的默认设置

此表单域不指定小部件,因此the select widget should be used by default使用:

mymodel = forms.ModelChoiceField(
                required=True,
                queryset=ships.models.Authority.objects.all(),
          ) 

这就是为什么您看到的是选择字段而不是自动完成。

你读过django docs about using widgets吗?

改用autocomplete\u light.ChoiceWidget

你要做的就是specify the widget

mymodel = forms.ModelChoiceField(
            required=True,
            queryset=ships.models.Authority.objects.all(),
            widget=autocomplete_light.ChoiceWidget('AutocompleteName')
          ) 

如果不知道自动完成的名称,请以staff身份登录并打开http://yoursite/autocomplete/

确保正确加载了jquery,并且也加载了autocomplete light的静态文件!

替代品

FTR:另一种方法是可能的,使用autocomplete_light.modelform_factory使用shortcuts like ^{} or ^{}API docs是可以接受的,但它不能打败reading the source code

总之,如果您使用的是ModelForm,我认为对您来说最简单的方法是使用get_widgets_dict快捷方式。

隐藏文档

您可能找不到the cookbook,因为它是docs廑rewrite分支中正在进行的工作,但是“高级基础”的第二部分提供了几个使用小部件的示例。

我知道文档有一个问题,因此docs_rewrite分支。现在我的重点是改进移动支持。

相关问题 更多 >