似乎无法删除一个对象:Django

时间:2011-02-08 11:08:45

标签: html django checkbox views

我有一个项目列表。每个项目都有一个复选框。我希望能够使用删除所有检查项目(已勾选的项目)的按钮删除项目。我有一些jscript做了一半的工作,但从我的数据库中删除项目证明了很多问题。当我按下删除按钮时,它会删除该项目。但是当我再次打开表单时,该项目会再次返回。

以下是我的观点。

def edit_order(request, order_no):
#some code
items = models.StorageItem.objects.filter(orderservicelist__order__pk = order.pk)
#some more code including if POST
    item = models.StorageItem.objects.get(pk = id)
        if request.POST.get('delete'):
            item.delete()

我的模板

{% extends "base_popup.html" %}


    {% block title %}
            {{title}}
    {% endblock %}

    {% block script %}

    <script type="text/javascript" src="{{MEDIA_URL}}ui/ui.datepicker.min.js"></script>
    <script type="text/javascript">
            $(function(){
                    $("#id_required_date").datepicker({dateFormat:"dd/mm/yy"});
                    $(":checkbox").css("width","auto");
            });
            $(function(){
                    $("#check_all").click(function(){
                            if(this.checked ==true)
                                            $("tbody :checkbox").each(function(){
                                                    this.checked=true;
                                            });
                                    else
                                            $("tbody :checkbox").each(function(){
                                                    this.checked=false;
                                            });
                    });
                       });
    </script>
    <script>
    function hideCheckedRows() {
        var checkboxes = document.getElementsByName("item");
        var checkboxes_to_remove = new Array();
        var count = 0;
        for (var i = 0; i < checkboxes.length; i++) {
            if (checkboxes[i].checked == true) {
                checkboxes_to_remove[count++] = checkboxes[i];
            }
        }
        for (var i = 0; i < checkboxes_to_remove.length; i++) {
            cbx = checkboxes_to_remove[i];
            // parentNode.parentNode.parentNode is the <tr>
            // parentNode.parentNode is the <td> containing the checkbox
            cbx.parentNode.parentNode.parentNode.removeChild(cbx.parentNode.parentNode);
        }
    }
    </script>


    {% endblock %}
    {% block content %}
                    <div id="location_header">{{title}}</div>
    <div id="form_container">
    <form action="." method="post">
            <fieldset class="model">

                    <p>
                            <span style="font-weight:bold;font-size:14px">Contact : {{order.contact}}</span>
                    </p>
                    <p>
                            <span style="font-weight:bold;font-size:14px">Cost : {{order.cost}}</span>
                    </p>
                    {{ form.as_p }}
            </fieldset>
            <fieldset class="model">
                    <legend>Items</legend>
                    <table id="items_table">

                            <thead>
                                    <tr>
                                            <td><input type="checkbox" id="check_all" checked="checked"></td>
                                            <td>Tiptop no</td><td>Client no</td><td>Title</td><td>Item type</td>
                                            <td>Format</td>
                                    </tr>
                           </thead>
                            <tbody>
                    {% for item in items %}
                            <tr>
                            <td><input type="checkbox" name="item" value="{{item.pk}}" checked="checked"></td>
                            <td>{{item.tiptop_id}}</td><td>{{item.alternative_id}}</td><td>{{item.title}}</td>
                            <td>{{item.type}}</td><td>{{item.format}}</td>

                            </tr>
                    {% endfor %}
                    </tbody>
                    </table>
                    <p>
                            <form method="post" action="help">
                            <table width="60%">
                                    <tr>
                                            <td>
                                                    <select name="contact_id">
                                                    {% for contact in order.contact.client.contact_set.all %}
                                                            <option value="{{contact.pk}}">{{contact}}</option>
                                                    {% endfor %}
                                                    </select>
                                            </td>
                                            <td>
                                                   <select name="status_id">
                                                    {% for status in status_list %}
                                                            <option value="{{status.pk}}">{{status}}</option>
                                                    {% endfor %}
                                                    </select>
                                            </td>
                                            <td><input type="submit" name="save_status" value="set status for selected items"></td>
                                    </tr>
                            </table>
                    </form>
                    </p>
            </fieldset>

            <div id="form_footer">
                    <span style="font-size:10px;font-weight:bold;margin-right:10px">
                    </span>
                    <input type="button"  value="Add item" onclick="window.location.href='{% url tiptop.views.client_items name.pk %}'" />
                    <input type="submit" name="save_item" value="Save" onclick="validate_item(this.form)">
                    <input type="button" name="delete" value="Delete Items" onclick="hideCheckedRows()">
            </div>
    </form>
    </div>
    {% endblock %}

1 个答案:

答案 0 :(得分:2)

您的问题是request.POST永远不会包含delete密钥。

这些type="button"元素需要type="submit"才能提交表单。

您只是隐藏了hideCheckedRows()

的元素