Вопрос

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

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

Это было полезно?

Решение 3

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

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

Другие советы

Проверить "Выбор"Параметр Чарфилда.

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

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

from django_countries.fields import CountryField

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

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

from django_countries.countries import COUNTRIES

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

Два проекта с низкой командой:

http://code.google.com/p/django-countries/

https://github.com/strange/django-country-utils

Два фрагмента:

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

http://djangosnippets.org/snippets/1476/

Пока я собираюсь на фрагмент.

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

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

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

Я нашел, что было бы полезно использовать эту библиотеку и создать простое приложение Django с модельной страной, например,

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

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

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

from django_countries.data import COUNTRIES

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

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

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

$ pip install django-countries

>>> from django_countries.data import COUNTRIES

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

Вот решение:

from django_countries.fields import CountryField

class Foo(TimeStampedModel):

    country = CountryField()

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

from django_countries.fields import CountryField    

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

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top