初始化要在 SelectField 中使用的 Flask WTFForm class 变量

Initializing a Flask WTFForm class variable to be used in SelectField

我正在尝试从数据库中读取一个列表,填充一个变量并在列表中使用这个变量。

我正在使用 Flask WTF,python 2.7

应用程序的构建方式:

form.py

class NewStatusForm(Form):
  SOURCE=[]
  source_id = SelectField('Source Code', [DataRequired()],
        choices = OrderedDict(SOURCE),prepend_blank = False)

  def __init__(self,**kwargs):
    # Call Flask-SQLAlchemy's constructor.
    super(NewStatusForm, self).__init__(**kwargs)

    for key, value in kwargs.iteritems():
        if key=='sources':
            SOURCE=value

我希望变量 SOURCE 保存来自数据库的列表

views.py 看起来像:

@status_blueprint.route('/status/new', methods = ['GET', 'POST'])
def status_new()

form = 
NewStatusForm(obj=status, sources=global_list_of_sources)

global_list_of_sources 包含来自 db

的列表

form.html很简单

<form method="POST" action="/">
{{ form.csrf_token }}
{{ source_id.label }} {{ source_id }}
<input type="submit" value="Select">

如何将 SOURCE 初始化为 sources 以获取列表? 现在我总是得到 SOURCE empty = [] and no list with source_id

我找到了解决方法:

在views.py

 form = NewStatusForm(obj = status)


 form.source_id.choices=OrderedDict(global_list_of_sources),prepend_blank = False)

并在 forms.py 中:

source_id = SelectField('Source Code', [DataRequired()],choices = [])