Я хочу удалить несколько записей с помощью флажка html, но не понимаю, как выполнить эту задачу. В настоящее время в моем проекте я реализую одну запись или объект удаления с помощью обобщенных c представлений, как вы можете видеть в приведенном ниже коде.
Как я могу удалить несколько записей с помощью флажка?
какие изменения мне нужны делать в моем коде?
Весь код Отредактирован с ошибкой трассировки @ ruddra
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')
products_deleted = Product.objects.filter(pk__in=products).delete()
msg = self.success_message.format(', '.join(products_deleted))
messages.success(self.request, msg, extra_tags='alert-danger')
return HttpResponseRedirect(self.success_url)
urls.py
path('delete', login_required(DeleteProducts.as_view(), login_url='login'), name='deleteproducts'),
шаблон. html
{% extends 'base.html' %}
{% block content %}
<div>
<h2 class="text-center" ><i>Stock!</i></h2>
{% if messages %}
{%for message in messages%}
<div class="alert {{ message.tags }}" role="alert">
{{ message }}
</div>
{% endfor %}
{% endif %}
<hr/>
<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>
<div class="pagination " >
<div class="step-links">
{% if page_obj.has_previous %}
<a href="?page=1" class="btn btn-sm btn-primary">« first</a>
<a href="?page={{ page_obj.previous_page_number }}" class="btn btn-sm btn-success">previous</a>
{% endif %}
{% if page_obj.has_next %}
<a href="?page={{ page_obj.next_page_number }}" class="btn btn-sm btn-success " >next</a>
<a href="?page={{ page_obj.paginator.num_pages }}" class="btn btn-sm btn-primary" >last »</a>
{% endif %}
<br/>
<div
class="current">
Page {{ page_obj.number }} of {{ page_obj.paginator.num_pages }}.
</div>
</div>
</div>
</div>
{% endblock %}
traceback
Internal Server Error: /stock/delete
Traceback (most recent call last):
File "C:\Users\Adil Ijaz\AppData\Local\Programs\Python\Python38-32\lib\site-packages\django\core\handlers\exception.py", line 34, in inner
response = get_response(request)
File "C:\Users\Adil Ijaz\AppData\Local\Programs\Python\Python38-32\lib\site-packages\django\core\handlers\base.py", line 115, in _get_response
response = self.process_exception_by_middleware(e, request)
File "C:\Users\Adil Ijaz\AppData\Local\Programs\Python\Python38-32\lib\site-packages\django\core\handlers\base.py", line 113, in _get_response
response = wrapped_callback(request, *callback_args, **callback_kwargs)
File "C:\Users\Adil Ijaz\AppData\Local\Programs\Python\Python38-32\lib\site-packages\django\contrib\auth\decorators.py", line 21, in _wrapped_view
return view_func(request, *args, **kwargs)
File "C:\Users\Adil Ijaz\AppData\Local\Programs\Python\Python38-32\lib\site-packages\django\views\generic\base.py", line 71, in view
return self.dispatch(request, *args, **kwargs)
File "C:\Users\Adil Ijaz\AppData\Local\Programs\Python\Python38-32\lib\site-packages\django\views\generic\base.py", line 97, in dispatch
return handler(request, *args, **kwargs)
File "C:\Users\Adil Ijaz\Desktop\onlineProject\market\stock\views.py", line 131, in post
msg = self.success_message.format(', '.join(products_deleted))
TypeError: sequence item 0: expected str instance, int found