我正在学习如何使用 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>