Подтвердить что ты не робот

Django: выпадающий список страны?

У меня есть форма для адресной информации. Одно из полей предназначено для адресной страны. В настоящее время это всего лишь текстовое поле. Для этого мне нужен выпадающий список (из стран ISO 3166). Я новичок django, поэтому я еще не использовал виджет Django Select. Каков хороший способ сделать это?

Жесткий код выбора в файле где-нибудь? Поместить их в базу данных? В шаблоне?

4b9b3361

Ответ 1

Закончено с использованием нижеприведенного фрагмента, который в основном определяет кортеж двух кодов стран символов. Кроме того, он определяет настраиваемый тип поля, называемый CountryField, и по умолчанию задает параметр выбора для указанного выше кортежа. Это автоматически отображается как выпадающий список.

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

Ответ 2

Отметьте choices" параметр CharField.

Вы также можете взглянуть на django-countries.

Ответ 3

Страны Джанго

from django_countries.fields import CountryField

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

Ответ 4

Страны Django

from django_countries.countries import COUNTRIES

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

Ответ 5

проверить это, вот список всех стран, основанный на ISO 3166, запрограммированном на python, и использование опции выбора в модели django.

Ответ 7

Вот хорошая библиотека со странами (и не только): pycountry

Его главное преимущество заключается в том, что это оболочка пакета pkg-isocodes Debian (таким образом, он может автоматически обновляться вместе с ним) по сравнению с жестко закодированными странами в других решениях. Он также имеет переводы.

Итак, если появится новая страна или существующие страны будут объединены вместе, вам не нужно будет менять свой код.

Мне было удобно использовать эту библиотеку и создать простое приложение Django с моделью Country, например

Затем вы можете заполнить и обновить свою таблицу "country" с помощью пользовательской команды django-admin, как описано здесь: Написание пользовательских django- команды администратора

Ответ 8

Как указывали предыдущие ответы, в django-countries есть CountryField. Это модельное поле.

Если поле формы необходимо в простой форме (не в форме модели), в django-countries v3.x(определенно протестировано в 3.3) можно использовать следующее:

from django_countries.data import COUNTRIES

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

Ответ 9

Поместить их в базу данных - лучший способ. Удобно для управления.

Ответ 10

Ссылка на пакет: django-страны
Если вы ищете, как это сделать в формах:

$ pip install django-countries

>>> from django_countries.data import COUNTRIES

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

Ответ 11

Вот решение:

from django_countries.fields import CountryField

class Foo(TimeStampedModel):

    country = CountryField()

Ответ 12

Я решил это, используя multiple=True:

from django_countries.fields import CountryField    

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

Вы можете прочитать больше об этом в документации:

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