Как построить поле выбора со списком стран для формы в Django - PullRequest
1 голос
/ 02 мая 2011

Я действительно новичок в django и создаю форму, и мне нужно поле выбора, чтобы пользователь мог выбрать свою страну.Я играю с ChoiceField и создал отдельный файл py со списком стран.мой макет выглядит примерно так:

файл формы:

из django import СТРАНЫ # У меня есть py-файл со списком стран

country = forms.ChoiceField (COUNTRIES, label = u'Country ')

Я вроде не ожидал, что это сработает - я получил сообщение о том, что он не может импортировать названия стран.Я не знаю, какой шаг предпринять для достижения моей цели.Любые полезные советы?

1 Ответ

4 голосов
/ 02 мая 2011

Вы можете импортировать модули так же, как и в модуле Python, отличном от django.

Модуль, который вы создали со списком стран, не является модулем django, поэтому вы не импортируете его из django.

Если у вас есть файл my_choices.py, который выглядит следующим образом:

extras.py

COUNTRY_CHOICES = ( ('USA', 'USA'),
                    ('JPN', 'JAPAN'),
                    ('CAN', 'CANADA') )

и находится в корневом каталоге вашего проекта:

myproject/
|_ __init__.py
|_ my_choices.py
|_ settings.py
...

если ваш проект находится в PYTHONPATH, вы можете импортировать варианты, набрав:

>>> from my_choices import COUNTRY_CHOICES
>>> print COUNTRY_CHOICES
(('USA', 'USA'), ('JPN', 'JAPAN'), ('CAN', 'CANADA'))
>>> 

Я обычно помещаю такие вещи в папку utils:

myproject/
|_ __init__.py
|_ utils/
   |_ __init__.py
   |_ my_choices.py

так:

>>> from utils.my_choices import COUNTRY_CHOICES
>>> COUNTRY_CHOICES
(('USA', 'USA'), ('JPN', 'JAPAN'), ('CAN', 'CANADA'))
>>> 

в ваших формах.py

from utils.my_choices import COUNTRY_CHOICES

class SomeForm(forms.Form):
    country = forms.ChoiceField(choices=COUNTRY_CHOICES, label=u'Country')
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...