django-autocomplete-light简单用法

时间:2013-01-23 07:25:31

标签: python django autocomplete django-autocomplete-light

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

所以,假设我有一个名为MyModel的Model,它有一个id和一个名字。我想知道的是创建表单窗口小部件的最简单方法,它可以为我提供相同的功能

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

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

有什么必要的步骤?我已经将'autocomplete_light'添加到了INSTALLED_APPS和

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

到urls.py和

import autocomplete_light
autocomplete_light.autodiscover()

之前

admin.autodiscover()
然而,我对下一步该做什么感到困惑:(

请不要在我已经仔细阅读的文档中指出我。

1 个答案:

答案 0 :(得分:20)

选择小部件是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_light.ChoiceWidget代替

您所要做的只是specify the widget

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

如果您不知道自动填充的名称是什么,请以工作人员身份登录并打开http://yoursite/autocomplete/

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

替代

FTR:使用autocomplete_light.modelform_factory使用shortcuts like autocomplete_light.modelform_factory or autocomplete_light.get_widgets_dict可以采用另一种方法。 API docs可以通过,但不会超过reading the source code

总而言之,我认为最简单的方法是使用get_widgets_dict快捷方式如果您使用的是ModelForm

隐藏文档

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

我知道文档有问题,因此docs_rewrite分支。现在我正专注于改善移动支持。