编程语言
首页 > 编程语言> > python-Django:编写一个视图以删除带有复选框的项目

python-Django:编写一个视图以删除带有复选框的项目

作者:互联网

我需要编写一个视图来获取POST数据,然后查找找出已选中的复选框,然后从ID匹配的数据库中删除项目,我需要帮助.
最初,这是一个复选框问题.在编辑订单表格中,有一个项目列表.现在,我可以使用一些JavaScript删除该项目,但是无法保存,因为我需要从数据库中完全删除它.我尝试使用我的编辑顺序视图使用delete()删除项目,但是那不起作用.我可能在做其他事情,但我不知道怎么办.

delete_item = request.POST.get('delete_item', None)
    if request.method == 'POST':
        form = forms.OrderForm(request.POST, instance = order)
        if form.is_valid() and save_item is not None:
            form.save(True)
            request.user.message_set.create(message = "The order has been updated successfully.")
            return HttpResponse("<script language=\"javascript\" type=\"text/javascript\">window.opener.location = window.opener.location; window.close();</script>")

        if status is not None and contact is not None and save_status is not None and delete_item is not None:
            try:
                for id in status_items:
                    item = models.StorageItem.objects.get(pk = id)
                    delete = item
                    delete.delete()
                    current_status = models.ItemStatusHistory(item = item, contact = contact, status = status,
                                                    user = request.user)
                    current_status.save()
            except:
                pass
            request.user.message_set.create(message = "Status successfully changed for {0} items".format(len(status_items)))

{% for item in items %}
        <tr class="items_table_row">
                <td><input type="checkbox" name="item" value="{{item.pk}}" checked="checked"{% endif %}>
                <td>{{item.tiptop_id}}</td><td>{{item.alternative_id}}</td><td>{{item.title}}</td><td>{{item.type}}</td><td>{{item.format}}</td>
                <td><span id="{{item.pk}}" name="type">{{item.itemstatushistory_set.latest}}</span></td><td>{{item.itemstatushistory_set.latest.date.date|date:"d M Y"}}</td>
                <td><a href="{% url tiptop.views.edit_item item.client.pk item.pk %}" onclick="return showAddAnotherPopup(this);">Edit</a></td>
        </tr>
{% endfor %}

解决方法:

给定您的模板,使用带有名称=“ item” … .delete()的复选框.

Items.objects.filter(id__in=request.POST.getlist('items')).delete()

你有例外吗?是否曾经运行delete()代码?提交打印声明.

您有“大量代码”,很多我们不熟悉的条件以及try / except块,因此我只想确保视图实际上已进入删除阶段.

更新:这是您的代码陌生人可以遵循的粗略代码.
如果status不为None且contact不为None且save_status不为None且delete_item不为None:

您为什么不只检查是否存在按下的特定按钮呢?

# html
<input type="submit" name="save" value="Save Items" />
<input type="submit" name="delete" value="Delete Items" />

# view
if request.POST.get('delete'):
   Items.objects.filter(id__in=request.POST.getlist('items')).delete()
elif request.POST.get('save'):
   form = Form(request.POST)
# ... so on

标签:django-forms,html,python,django,checkbox
来源: https://codeday.me/bug/20191023/1913744.html