使用django更新数据时如何获取多个数据?

时间:2016-11-25 12:22:39

标签: python django

我想使用多个复选框更新数据 这是我的view.py

def update_kel_stat(request, id):
if request.method == "POST":
    cursor = connection.cursor()
    sql = "UPDATE keluargapeg_dipkeluargapeg SET KelStatApprov='3' WHERE (PegUser = %s )" % id 
    cursor.execute(sql)

这是我的template.html

<form method="post" action="" name="kel" enctype="multipart/form-data">
{% for keluarga in kels %}
    <tr id="{{ keluarga.KelID }}">
        <td>
            <a href="#">{{ keluarga.KelNamaLengkap }}</a>
        </td>
        <td>{{ keluarga.KelStatApprov }}</td>
        <td>{{ keluarga.KelKetRevisi }}</td>
        <td><input type="checkbox" name="kel[]"
                   value="{{ keluarga.KelID }}"></td>
    </tr>
{% endfor %}
<tr>
    <td>
        <button type="button" name="btn_delete" id="btn_delete"
                class="btn btn-success"
                onClick="setDeleteAction();">Approve
        </button>
    </td>
</tr>
</form>

如何从template.html中的复选框获取多个值到django view.py?

1 个答案:

答案 0 :(得分:2)

首先,不建议用户使用原始SQL进行此类简单查询。使用django ORM更新一些记录非常容易:

Entry.objects.filter(id=10).update(comments_on=False)

至于你的问题,你可以这样做。在您的模板中:

{% for keluarga in kels %}
    <input type="checkbox" name="kel" id="kel{{ forloop.counter }}" value="{{ keluarga.KelID }}">
    <label for="kel{{ forloop.counter }}">Choice {{ forloop.counter }}</label>
{% endfor %}

在你看来:

kels = request.POST.getlist('kel')
Kel.objects.filter(id__in=kels).update(StatApprov=3)