【问题标题】:How to delete multiple objects in django?如何在 django 中删除多个对象?
【发布时间】:2020-04-07 07:16:01
【问题描述】:

我正在尝试使用 html 复选框删除 django 模型的多个对象,但我不能。请指导我完成这项任务需要做什么。

我为此尝试了以下代码,但失败了。

views.py

class DeleteProducts(SuccessMessageMixin, View):
    success_url = reverse_lazy('stock:stock')
    success_message = "Products are deleted successfully."

    def post(self, request, *args, **kwargs):
        products = self.request.POST.getlist('product')
        Product.objects.filter(pk__in=products).delete()
        messages.success(self.request, self.success_message, extra_tags='alert-danger')
        return redirect('stock:stock')

在模板中我是否完美地使用了复选框? template.html

<form method="POST" action="{% url 'stock:deleteproducts' %}">
{% csrf_token %}
  {% for product in page_obj %}

  <div class="row" >
      <input type="checkbox" value="{{ product.id }}">
    <div class="col-sm-2" >
          <h5>{{ product.id }}</h5>
          <img src="{{ product.Picture.url }}" height="120px"  />
    </div>
    <div class="col-sm-4" >
      <h5><u>Product Name</u>: {{ product.pro_name }}</h5>
      <h6><u>Company Name</u>: {{product.companyName}}</h6>
      <div class="row" >
        <div class="col-sm" >
           <p>Purchase Price: <b>{{product.Purchase_Price}}</b></p>
        </div>
        <div class="col-sm" >
          <p class="pt-0">Sale Price: <b>{{product.Sale_Price}}</b> </p>
        </div>
      </div>
      <div class="row" >
        <div class="col-sm" >
           <p>Quantity <b>{{product.Quantity}}</b></p>
        </div>
        <div class="col-sm" >
          <p> Added By:  <b>{{product.saler}}</b> </p>
        </div>
      </div>
    </div>
       <div class="col-sm-4" >
         <p><b>Added Date</b>:{{ product.pub_date }}</p>
         <hr/>
         <center>
           <a href="{% url 'stock:editproduct' product.id %}" class="btn btn-success" >Edit</a>

         </center>

    </div>

  </div>
  <hr/>

  {% endfor %}
 <input type="submit" class="btn btn-danger" value="Delete" >
</form>

urls.py

path('delete/', login_required(DeleteProducts.as_view(), login_url='login'), name='deleteproducts'),

【问题讨论】:

    标签: django python-3.x django-forms


    【解决方案1】:

    您需要将name="product" 属性分配给复选框,因为您尝试使用self.request.POST.getlist('product') 获取它:

    <input type="checkbox" value="{{ product.id }}" name="product">
    

    【讨论】:

    • 谢谢@Harun
    猜你喜欢
    • 2012-02-26
    • 1970-01-01
    • 1970-01-01
    • 2020-06-15
    • 2018-11-30
    • 2021-10-24
    • 1970-01-01
    • 2020-02-13
    • 2011-09-14
    相关资源
    最近更新 更多