Синтаксис WTForms при использовании Flask и Flask-MongoAlchemy - PullRequest
1 голос
/ 22 октября 2011

Я тестирую Python Framework Flask и Flask-MongoAlchemy с MongoDB (конечно).Поскольку я создаю несколько документов в своем тестовом приложении, мне нравится проверять формы, используя WTForms .

Может кто-нибудь поделиться со мной примером того, как создавать ссылки на объекты в SelectField ()?

class Parent(db.Document):
    title = db.StringField()
    description = db.StringField()

class Object(db.Document):
    parent = db.DocumentField(Parent)
    title = db.StringField()

@app.route('/object/new', methods=['GET', 'POST'])
def new_object():
    form = ObjectForm(obj=Object)
    form.parent.choices = [(???) for p in Parent.query.all()]  #<-- #1 correct syntax I like to understand, '(t._id, t.title)' didn't work.
    if form.validate_on_submit():
        form.save()
        return redirect(url_for('...'))
    return ....

class ObjectForm(wtf.Form):
    parent = wtf.SelectField(u'Parent')  #<-- #2 do I need to add anything special?

Любое предложение было бы здорово!Или ссылка на онлайн-пример.Спасибо!

1 Ответ

1 голос
/ 24 октября 2011

Это задокументировано в документации WTForms для SelectField , приведенной здесь для удобства:

Поля выбора сохраняют свойство choices, которое представляет собой последовательность пар (значение, метка).

Я не уверен в синтаксисе form.parent.choices, но код выглядит так:

form.parent.choices = [(1, 'parent name 1'), (2, 'parent name 2'), (3, 'parent name 3'), (4, 'parent name 4')]
...