Django: liste déroulante Pays?
J'ai un formulaire pour les informations d'adresse. L'un des champs est le pays de l'adresse. Actuellement, c'est juste une zone de texte. Je voudrais un menu déroulant (liste des pays ISO 3166) pour cela. Je suis un django d'un débutant, donc je n'ai même pas utilisé un Django widget de sélection de encore. Ce qui est une bonne façon de le faire?
Coder en dur le choix dans un fichier quelque part? Les mettre dans la base de données? Dans le modèle?
InformationsquelleAutor User | 2010-06-03
Vous devez vous connecter pour publier un commentaire.
Découvrez "choix" paramètre d'un CharField.
Vous pouvez également jeter un oeil à django-pays.
Django Pays
from django_countries.fields import CountryField
.Fini à l'aide de l'extrait de code ci-dessous qui caractérise principalement par un tuple de tuples de deux caractères des codes de pays. En outre, il définit un type de champ personnalisé appelé CountryField et par défaut, le choix du paramètre à l'défini ci-dessus n-uplet. Automatiquement, cela est rendu sous forme de liste déroulante.
http://djangosnippets.org/snippets/494/
maxlength
bug.Django Pays
from django_countries import countries
Deux bas maintenue projets:
http://code.google.com/p/django-countries/
https://github.com/strange/django-country-utils
Deux extraits:
http://djangosnippets.org/snippets/494/
http://djangosnippets.org/snippets/1476/
Pour l'instant, je vais pour un extrait.
Voici une belle bibliothèque avec des pays (et pas seulement): pycountry
Son principal avantage est qu'il est un wrapper autour de Debian package pkg-isocodes (peut donc les mises à jour automatiquement) par rapport à codée en dur des pays dans d'autres solutions. Il a aussi des traductions.
Si de nouveaux pays ou de pays seront fusionnés ensemble, vous n'avez pas besoin de modifier votre code.
J'ai trouvé utile d'utiliser cette bibliothèque et de créer un simple Django app avec le modèle de Pays, par exemple
Puis vous pouvez remplir et tenir à jour votre "pays" de la table par le biais de la coutume de django-admin de commande comme décrit ici: L'écriture personnalisée django-admin commandes
Comme les réponses précédentes ont dit, il y a un
CountryField
dansdjango-countries
. C'est un modèle de champ.Si un champ de formulaire qui est nécessaire dans une forme ordinaire (pas de modèle de forme), dans
django-countries
v3.x (certainement testé en 3.3) les éléments suivants peuvent être utilisés:Les mettre dans la base de données est une meilleure façon. Pratique de la gestion.
Lien vers le package : django-pays
Si vous cherchez comment le faire dans les formes :
Voici la solution:
Je l'ai résolu en utilisant
multiple=True
:Vous pouvez en lire plus à ce sujet dans la documentation:
https://github.com/SmileyChris/django-countries