python - dal_select2 - django-autocomplete-light uso simple
(1)
Estoy tratando de entender cómo usar django-autocomplete-light para un proyecto existente. Esto parece una buena solución de autocompletar para django para la cual ya estoy usando los ModelChoiceFields normales.
Entonces, digamos que tengo un modelo llamado MyModel que tiene una identificación y un nombre. Lo que me gustaría saber es la forma más sencilla posible de crear un widget de formulario que me proporcione la misma funcionalidad con
mymodel = forms.ModelChoiceField( required=True, queryset=ships.models.Authority.objects.all() , )
así que podría agregar ese widget a cualquier formulario que quisiera para seleccionar instancias de MyModel sin usar selec.t
¿Cuáles son los pasos necesarios para tener eso? Ya he agregado ''autocomplete_light'' a INSTALLED_APPS y
url(r''autocomplete/'', include(''autocomplete_light.urls'')),
a urls.py y
import autocomplete_light
autocomplete_light.autodiscover()
antes de
admin.autodiscover()
sin embargo me estoy confundiendo con qué hacer a continuación :(
Por favor, no me apuntes en la documentación que ya he leído a fondo.
El widget de selección es predeterminado para ModelChoiceField
Este campo de formulario no especifica un widget, por lo que el widget de selección debe usarse de forma predeterminada con:
mymodel = forms.ModelChoiceField(
required=True,
queryset=ships.models.Authority.objects.all(),
)
Esta es la razón por la que ve un campo de selección en lugar de un autocompletado.
¿ Leíste documentos de django sobre el uso de widgets ?
Utilice autocomplete_light.ChoiceWidget en su lugar
Todo lo que tienes que hacer es especificar el widget :
mymodel = forms.ModelChoiceField(
required=True,
queryset=ships.models.Authority.objects.all(),
widget=autocomplete_light.ChoiceWidget(''AutocompleteName'')
)
Si no sabe cuál es el nombre del autocompletado, ingrese como personal y abra http://yoursite/autocomplete/
.
Asegúrate de que tienes jquery correctamente cargado y que los archivos estáticos de autocomplete-light también están cargados!
Alternativas
FTR: otra forma es posible, usando autocomplete_light.modelform_factory
usando atajos como autocomplete_light.modelform_factory
o autocomplete_light.get_widgets_dict
. Los documentos API son pasables, pero no superan la lectura del código fuente .
En general, creo que lo más fácil para usted es utilizar el acceso directo get_widgets_dict si está usando un ModelForm .
Documentos ocultos
Es posible que no haya encontrado el libro de recetas porque es un trabajo en progreso en la rama docs_rewrite, pero la segunda parte de "Conceptos básicos de alto nivel" proporciona varios ejemplos de cómo usar el widget.
Sé que los documentos tienen un problema, de ahí la rama docs_rewrite. En este momento me estoy enfocando en mejorar el soporte móvil.