【问题标题】:multiple checkbox sqlalchemy delete多个复选框sqlalchemy删除
【发布时间】:2017-01-19 20:08:58
【问题描述】:

我是 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>  

还有flask 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()

【问题讨论】:

    标签: python html sqlalchemy


    【解决方案1】:

    这一行

    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 &lt;table_name&gt; WHERE alert_id IN (&lt;val&gt;, &lt;val2&gt;)

    此外,最好坚持使用request.form.getlist("alert_id") 而不是request.form["alert_id"],这样您就可以始终确保获得list 而不是KeyError,以防alert_id 不存在。

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-05-21
    • 2012-01-21
    • 1970-01-01
    • 2021-07-11
    • 1970-01-01
    • 1970-01-01
    • 2010-11-20
    • 2013-11-22
    相关资源
    最近更新 更多