Как удалить несколько объектов в django? - PullRequest
0 голосов
/ 07 апреля 2020

Я пытаюсь удалить django модель нескольких объектов, используя html флажки, но я не могу. Пожалуйста, сообщите мне, что мне нужно сделать, чтобы выполнить эту задачу.

Я пытаюсь использовать следующий код для этой цели, но мне не удалось.

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')

В шаблоне я использовал флажки или нет ?? шаблон. 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'),

1 Ответ

1 голос
/ 07 апреля 2020

Вам необходимо присвоить атрибут name="product" флажкам, так как вы пытаетесь получить его с помощью self.request.POST.getlist('product'):

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