Flask – как мне комбинировать Flask-WTF и Flask-SQLAlchemy для редактирования db-моделей?

Я пытаюсь создать страницу редактирования для существующей модели (уже сохраненной в db). Объект формы ожидает, что многоточечный экземпляр заполнит свои поля. Это то, что у меня есть:

# the model - assumes Flask-SQLAlchemy from flask.ext.sqlalchemy import SQLAlchemy db = SQLAlchemy(app) class Person(db.Model): id = db.Column(db.Integer, primary_key=True) name = db.Column(db.String(80), unique=True) def __init__(self, name=name): self.name = name # the form - assumes Flask-WTF ext. from flask.ext.wtf import Form, TextField, Required, BooleanField class PersonForm(Form): name = TextField('name') ## the view @app.route('/person/edit/<id>/', methods=['GET', 'POST']) def edit_person(id): person = Person.query.get(id) if person: form = PersonForm(person) #<-- raises error return render_template('edit_person.html', form=form) 

Я мог бы назначить каждое поле в форме каждому полю модели (form.data['name'] = person.name, etc...) , Но это кажется избыточным для больших моделей. Есть ли ярлык, который я пропускаю?

One Solution collect form web for “Flask – как мне комбинировать Flask-WTF и Flask-SQLAlchemy для редактирования db-моделей?”

Пожалуйста, обратитесь к документации wtforms:

http://wtforms.simplecodes.com/docs/0.6/forms.html#wtforms.form.Form

Вы передаете аргумент «obj». Это привяжет свойства модели к полям формы, чтобы обеспечить значения по умолчанию:

 @app.route('/person/edit/<id>/', methods=['GET', 'POST']) def edit_person(id): person = Person.query.get_or_404(id) form = PersonForm(obj=person) if form.validate_on_submit(): form.populate_obj(person) 

Обратите внимание также на метод populate_obj. Это удобный ярлык, который привяжет значения формы к свойствам модели (только те поля, которые вы определили в своей форме, поэтому достаточно безопасны для использования).

  • SQLAlchemy: как фильтровать типы столбцов PgArray?
  • SQLAlchemy: выбор столбцов объекта в запросе
  • Предложение VALUES в SQLAlchemy
  • sqlalchemy простой пример `sum`,` average`, `min`,` max`
  • Как удалить запись по id в Flask-SQLAlchemy
  • SQLAlchemy, Flask: получить отношения из db.Model
  • Работа с дублирующимися первичными ключами при вставке в SQLAlchemy (декларативный стиль)
  • Недостаток метакласса SqlAlchemy
  •  
    Interesting Posts for Van-Lav

    Как извлечь биты больших числовых типов данных Numpy

    как распараллелить многие (нечеткие) сравнения строк, применяя в Pandas?

    Файл scrapy csv имеет равномерные пустые строки?

    Как использовать url_for, если мой метод имеет несколько аннотаций маршрута?

    Лучший способ подсчета количества строк с отсутствующими значениями в pandas DataFrame

    Python: получение текста из html с помощью Beatifulsoup

    Numpy.genfromtxt удаляет квадратные скобки в dtype.names

    Можно ли запустить собственный код python в chrome?

    Преобразование 1,2 Гбайт списка ребер в разреженную матрицу

    Вложенные запросы / сравнение нескольких наборов данных эффективно в Pandas

    Доступ к использованию ЦП / ОЗУ (например, с Диспетчером задач, но через API!)?

    Как назначить адрес памяти для переменной в Python?

    Python: как передать объект Autoproxy

    Вывести скрипт python в текстовый файл

    Как я могу связать forloop.counter с строкой в ​​моем шаблоне django?

    Python - лучший язык программирования в мире.