使用Django发送带有复选框值更改的POST

时间:2019-04-09 13:34:42

标签: html django django-templates

我有一个表,该表中有一个表单,其中包含用户可以更改的字段。这些字段中的三个使用复选框。遵循此post之后,我能够反映出数据库中当前的内容,但是我无法为下一个难题找到其他内容。

我遇到的问题是,如果将复选框设置为true(选中),然后取消选择它,则POST数据将不包含任何内容,表明不再对其进行检查。它没有给出“ off”,“ 0”或false的值。我如何确定在未选中复选框的情况下仍能在帖子数据中获得那些值(“ off”,0”或“ false”)?

下面是我的代码:

<form id=result_form action= "{% url 'example:save_notes' %}" method="post">
{% csrf_token %}
    <table id="results_table" class="formdata" summary="Example Search Results"
    data-order='[[ 1, "des" ]]' data-page-length='25'>
        <thead>
            <tr>
                <th style="width:5%" scope="col">Search Method</th> 
                <th style="width:20%" scope="col">Search Date</th>
                <th style="width:5%" scope="col">City</th>
                <th style="width:10%" scope="col">Example Name</th>
                <th style="width:10%" scope="col">Article Title</th>
                <th style="width:10%" scope="col">Article Link</th>
                <th style="width:5%" scope="col">Reviewed </th>
                <th style="width:5%" scope="col">J/J Related</th>
                <th style="width:5%" scope="col">N Related</th>
                <th scope="col">General Notes</th>
                <th scope="col">Findings</th>
                <th scope="col">Edit</th>

            </tr>
        </thead>
    <tbody>
    {% for result in results %}
        <tr>
            <td>{{result.notes.method}}</td>
            <td>{{result.retrieved_on}}</td>
            <td>{% for e in result.search_result_t.all%}{{e.search_term_id.example_abbrev}}&nbsp{% endfor %}</td>
            <td>{% for e in result.search_result_t.all%}{{e.search_term_id.example_ID.example_name}}{% endfor %}</td>
            <td>{{result.title}}</td>
            <td width="5%"><a href={{result.link}} target="_blank">{{result.link}}</a></td>
            <form action="{% url 'example:form_edit' %}" method="POST">
            <td><input type="checkbox" name="reviewed" {% if result.notes.reviewed %}checked{% endif %}></td>
            <td><input type="checkbox" name="jj" {%if result.notes.j_j %}checked{% endif %}></td>
            <td><input type="checkbox" name="n" {%if result.notes.n_related %}checked{% endif %}></td>
            <td><textarea cols="40" rows="15" name="general_notes" value = "{{result.notes.general_notes}}">{{result.notes.general_notes | default_if_none:""}}</textarea>
            <td><textarea cols="40" rows="15" name="significant_findings" value = "{{result.notes.significant_findings}}">{{result.notes.significant_findings | default_if_none:""}}</textarea>
            <td><button>Save</button></td>    
            <input type="hidden" name="result.id" value={{result.id}}>
            </form>
        </tr>
        {% endfor %}

2 个答案:

答案 0 :(得分:2)

未选中的框不是请求的一部分-请参见here。但是为什么您需要此信息,因为您应该知道已发送的复选框。

答案 1 :(得分:1)

谢谢ger.s.brett的指导。我用了这个post的答案 解决我的问题。

这看起来是看该字段是否在POST中:

已审核= request.POST.get('reviewed',“ false”)

如果该字段存在,则使用POST值。如果不存在,则将其视为错误。