我是SQLAlchemy和HTML表单的新手,需要了解如何在我的dB表中删除与我的HTML表单中的复选框相对应的多行。因为它只是从表中删除第一个被检查的项目。我希望这可以在SQLAlchemy方面没有for循环的情况下完成吗?
这是我的HTML代码: -
<ul>
{% for alert in alerts %}
<li> <input name="alert_id" type="checkbox" value="{{ alert.alert_id }}"/> Ticker:{{ alert.ticker }} Price:{{ alert.price }}</li>
{% endfor %}
</ul>
烧瓶python SQLAlchemy脚本: -
if request.method == "POST":
if request.form["alert_id"]:
Alert.query.filter(Alert.alert_id == request.form["alert_id"]).delete()
db.session.commit()
答案 0 :(得分:0)
这一行
Alert.query.filter(Alert.alert_id == request.form["alert_id"]).delete()
应该是
Alert.query.filter(Alert.alert_id.in_(request.form["alert_id"])).delete()
执行SELECT * FROM <table_name> WHERE alert_id IN (<val>, <val2>)
此外,最好坚持使用request.form.getlist("alert_id")
代替request.form["alert_id"]
,以便始终确保list
而不是KeyError
以防alert_id
}不存在。