我正在尝试了解如何将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()
然而,我对下一步该做什么感到困惑:(
请不要在我已经仔细阅读的文档中指出我。
答案 0 :(得分:20)
此表单字段未指定小部件,因此the select widget should be used by default包含:
mymodel = forms.ModelChoiceField(
required=True,
queryset=ships.models.Authority.objects.all(),
)
这就是您看到选择字段而不是自动填充的原因。
您是否阅读过django docs about using widgets?
您所要做的只是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分支。现在我正专注于改善移动支持。