Domanda

Ho una forma di informazioni di indirizzo. Uno dei campi è per il paese di indirizzo. Attualmente questa è solo una casella di testo. Vorrei un elenco a discesa (ISO 3166 paesi) per questo. Sono un newbie Django quindi non ho nemmeno usato un Django Select widget di ancora. Che cosa è un buon modo per fare questo?

Hard-codice le scelte in un file da qualche parte? Metteteli nel database? Nel modello?

È stato utile?

Soluzione 3

finito per usare il frammento di sotto che definisce fondamentalmente una tupla di tuple di due codici di paese di carattere. Inoltre si definisce un tipo di campo personalizzato chiamato countryfield e le impostazioni predefinite del parametro scelte alla tupla sopra definito. Questo viene automaticamente visualizzato come un elenco a discesa.

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

Altri suggerimenti

Check out "fino scelte " parametro di un CharField .

Si potrebbe anche voler dare un'occhiata al django-Paesi .

Django Paesi

from django_countries.fields import CountryField

class Foo(models.Model):
    country = CountryField()

Django Paesi

from django_countries.countries import COUNTRIES

class CountryForm(forms.Form):
      country= forms.ChoiceField(COUNTRIES)

Ecco una bella libreria con i paesi (e non solo): pycountry

Il suo vantaggio principale è che si tratta di un wrapper pacchetto Debian PKG-codici ISO (quindi possono aggiorna automaticamente con esso) rispetto ai paesi hard-coded in altre soluzioni. Ha anche traduzioni.

Quindi, se di nuovo appare paese o dei paesi esistenti saranno fusi insieme non è necessario modificare il codice.

Ho trovato utile utilizzare questa biblioteca e creare una semplice app Django con il modello di Paese, ad esempio

Poi si può compilare e tenere aggiornato il vostro tavolo 'campagna' per mezzo di comando personalizzato django-admin come descritto qui: Scrivendo su misura django-admin comandi

Per quanto risposte precedenti hanno già detto, c'è un CountryField in django-countries. Questo è un campo modello.

Se un campo di modulo è necessario in una forma semplice (forma non modello), in django-countries V3.x (sicuramente testato in 3.3) è possibile utilizzare il seguente:

from django_countries.data import COUNTRIES

class MyForm(forms.Form):
    country = forms.ChoiceField(sorted(COUNTRIES.items()))

Metteteli nel database è un modo migliore. Comodo per la gestione.

Link al pacchetto: django-paesi
Se alla ricerca di come farlo in forme:

$ pip install django-countries

>>> from django_countries.data import COUNTRIES

>>> Country = forms.ChoiceField(choices = sorted(COUNTRIES.items()))

Ecco la soluzione:

from django_countries.fields import CountryField

class Foo(TimeStampedModel):

    country = CountryField()

ho risolto utilizzando multiple=True:

from django_countries.fields import CountryField    

class UserProfile(models.Model):
    countries = CountryField(multiple=True)

Si può leggere di più su di esso nella documentazione:

https://github.com/SmileyChris/django-countries

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top