如何将包含调查表单选项的数据文件读入models.py.

时间:2014-05-19 18:35:08

标签: django python-2.7 django-forms

我正在创建一个调查表单,在用户选择时会有很多下拉菜单。这使我的models.py非常混乱。

我如何将选项存储在单独的数据文件中,以便每个模型都可以读取它们?

以下示例旨在让用户选择他们所处的状态。为简洁起见,我没有包含所有状态。

感谢您的帮助,我是Django的新手,一般编码并随时学习。

class StateChoice(forms.Form):

    ALABAMA = 'Alabama'
    ALASKA = 'Alaska'
    #...

    #...
    WISCONSIN = 'Wisconsin'
    WYOMING = 'Wyoming'

    STATE = (
        (ALABAMA, 'Alabama'),
        (ALASKA, 'Alaska'),
        #...

        #...
        (WISCONSIN, 'Wisconsin'),
        (WYOMING, 'Wyoming'),

            )

    state = forms.ChoiceField(widget=forms.Select(), choices=STATE, initial=ALABAMA)

    def __unicode__(self):
        return self.STATE

1 个答案:

答案 0 :(得分:0)

您可以使用django-localflavor库来提供帮助:http://django-localflavor.readthedocs.org/en/latest/localflavor/us/

from django.db import models
from localflavor.us.us_states import US_STATES
class StateChoice(models.Model):
    state = forms.ChoiceField(choices=US_STATES)

或者,创建只需将您拥有的所有常量移动到另一个文件,例如{app}目录中的utils.py

所以utils.py有:

ALABAMA = 'Alabama'
...

STATES = ((ALABAMA, ALABAMA), ...)

,您的模型如下:

from django.db import models
from .utils import STATES
class StateChoice(models.Model):
    state = forms.ChoiceField(choices=STATES)