form example drop down dependent cities chained and django drop-down-menu django-forms country django-widget

example - drop down list django



Django: ¿lista desplegable de países? (11)

Tengo un formulario de información de dirección. Uno de los campos es para la dirección del país. Actualmente esto es solo un cuadro de texto. Me gustaría una lista desplegable (de países ISO 3166) para esto. Soy un novato de Django, así que ni siquiera he usado un widget de Django Select. ¿Cuál es una buena manera de hacer esto?

¿Codificar las opciones en un archivo en algún lugar? ¿Ponerlos en la base de datos? En la plantilla?


Aquí está la solución:

from django_countries.fields import CountryField class Foo(TimeStampedModel): country = CountryField()


Aquí hay una bonita biblioteca con países (y no solo): pycountry

Su principal ventaja es que es un envoltorio alrededor del paquete Debian pkg-isocodes (por lo tanto, puede actualizarse automáticamente con él) en comparación con los países codificados en otras soluciones. También tiene traducciones.

Por lo tanto, si aparece un nuevo país o los países existentes se fusionarán, no necesita cambiar su código.

Me pareció útil usar esta biblioteca y crear una aplicación Django sencilla con el modelo País, por ejemplo

Luego, puede completar y actualizar su tabla de "país" mediante el comando personalizado django-admin como se describe aquí: Escribir comandos personalizados django-admin


Como las respuestas anteriores han indicado, hay un CountryField en django-countries . Este es un campo modelo.

Si se necesita un campo de formulario en forma simple (no en forma de modelo), en django-countries v3.x (definitivamente probado en 3.3) se puede usar lo siguiente:

from django_countries.data import COUNTRIES class MyForm(forms.Form): country = forms.ChoiceField(sorted(COUNTRIES.items()))



Echa un vistazo a " choices " parámetro de un CharField.

También es posible que desee echar un vistazo a django-countries .


Enlace al paquete: django-countries
Si buscas cómo hacerlo en formas:

$ pip install django-countries >>> from django_countries.data import COUNTRIES >>> Country = forms.ChoiceField(choices = sorted(COUNTRIES.items()))


Lo resolví usando multiple=True :

from django_countries.fields import CountryField class UserProfile(models.Model): countries = CountryField(multiple=True)

Puedes leer más sobre esto en los documentos:

django-countries


Países Django

from django_countries.countries import COUNTRIES class CountryForm(forms.Form): country= forms.ChoiceField(COUNTRIES)


Ponerlos en la base de datos es una mejor manera. Conveniente para la gestión.


Terminé usando el siguiente fragmento que básicamente define una tupla de tuplas de códigos de país de dos caracteres. Además, define un tipo de campo personalizado llamado CountryField y configura de manera predeterminada el parámetro de opciones para la tupla definida anteriormente. Esto se procesa automáticamente como una lista desplegable.

http://djangosnippets.org/snippets/494/


Países Django

from django_countries.fields import CountryField class Foo(models.Model): country = CountryField()