簡體   English   中英

如何刪除 django 中的多個對象?

[英]How to delete multiple objects in django?

我正在嘗試使用 html 復選框刪除 django model 多個對象,但我不能。 請指導我完成這項任務需要做什么。

為此,我嘗試了以下代碼,但失敗了。

視圖.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')

在模板中我是否完美地使用了復選框? 模板.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>

網址.py

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

您需要將name="product"屬性分配給復選框,因為您嘗試使用self.request.POST.getlist('product')獲取它:

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM