#django #forms #drop-down-menu
#django #формы #выпадающее меню
Вопрос:
Я действительно новичок в django, и я создаю форму, и мне нужно поле выбора, чтобы пользователь мог выбрать свою страну. Я играю с полем выбора и создал отдельный py-файл со списком стран. мой макет выглядит примерно так:
файл формы:
из django import COUNTRIES # У меня есть py-файл со списком стран
страна = формы.Поле выбора (СТРАНЫ, метка =u’Country’)
Я вроде как не ожидал, что это сработает — я получил сообщение об ошибке, в котором говорится, что он не может импортировать страны имен. Я не знаю, какой шаг предпринять для достижения моей цели. Есть какие-нибудь полезные советы?
Комментарии:
1. Вы можете печатать
manage.py shell
иfrom django import COUNTRIES
без каких-либо проблем? Я так не думаю. Пожалуйста, подтвердите.
Ответ №1:
вы можете импортировать модули таким же образом, как и в модуле 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'))
>>>
в вашем forms.py
from utils.my_choices import COUNTRY_CHOICES
class SomeForm(forms.Form):
country = forms.ChoiceField(choices=COUNTRY_CHOICES, label=u'Country')