私はsqlalchemyの使い方を学んでおり、小さなアプリを開発しています。ORM を使用してデータベースに保存されているデータを更新しようとすると、いくつかの問題が発生します。何が欠けているのかわかりません。フォームedit_product.html
には正しいデータが取り込まれますが、return redirect(url_for
ステートメントはデータを更新せずに起動されます。私はmerge()を使用しadd()
ています。いくつかのチュートリアルで提案されているように使用しようとしましたが、これを行うと、レコードが既に存在するというエラーが表示されます。
これはでの私のedit_product
機能ですviews.py
:
from database import db_session
@app.route('/product/edit/<int:product_id>', methods=['GET', 'POST'])
def edit_product(product_id):
product = Product.query.filter(Product.id == product_id).first()
form = NewOtrosForm(obj=product)
if request.method == 'POST':
print request.form
if form.validate():
form.populate_obj(product)
db_session.commit()
return redirect(url_for('product'))
else:
return render_template('edit_product.html', form=form)
これは、jinja2 テンプレートの編集フォームにあるものです。
{% from "_formhelpers.html" import render_field %}
<form method=post action="">
<dl>
{{ render_field(form.name) }}
{{ render_field(form.price) }}
{{ render_field(form.description) }}
{{ render_field(form.provider) }}
{{ render_field(form.detalles) }}
</dl>
<p><input type="submit" value="Save Changes"></p>
</form>