2016-12-26 98 views
0

我將在Django中實現多刪除(通過選擇框)視圖。使用Django前端中的複選框刪除多行

我知道django.contrib.admin.actions中有一個視圖,但我無法將其移植到前端。

我正在尋找一個例子(用於Django視圖+ HTML),但找不到任何。

1)如何使用複選框和單個刪除按鈕在列表頁面中創建多個刪除對象。 2)什麼是列表的變化,刪除視圖和list.html頁面

views.py

def Agent_List(request, id=None): #list items 
    queryset = Agent.objects.order_by('id') 
    #queryset = Agent.objects.all() 
    query = request.GET.get('q') 
    if query: 
     queryset=queryset.filter(
      Q(Aadhaar_Number__icontains=query) | 
      Q(PAN_Number__icontains=query) | 
      Q(Account_Number__icontains=query) 
      ).distinct() 
    context = { 
    "object_list": queryset, 
    "Full_Name ": "Agent_List", 

    } 
    return render(request, "customer/Agent_List.html", context) 


def Agent_Delete(request, id=None): 
    instance = get_object_or_404(Agent, id=id) 
    instance.delete() 
    messages.success(request, "Successfully deleted") 
    return redirect("customer:Agent_List") 

list.html

{% extends "layout.html" %} 
    {% load staticfiles %} 
    <head> 
    </head> 
    <body> 
    <div id="wrapper"> 
     <div id="page-wrapper" class="gray-bg"> 
     {% block content %} 
     <div class="row wrapper border-bottom white-bg page-heading"> 
      <div class="col-lg-10"> 
      <h2>Agent </h2> 
      <ol class="breadcrumb"> 
       <li><a href="index.html">Manage My Wallet</a></li> 
       <li><a>Agent Management </a></li> 
      </ol> 
      </div> 
      <div class="col-lg-2"></div> 
     </div> 
     <div class="wrapper wrapper-content animated fadeInRight"> 
      <div class="row"> 
      <div class="col-lg-12"> 
       <div class="panel panel-primary"> 
       <div class="panel-heading"> 
        Agent Profile List 
       </div> 
       <div class="panel-body"> 
        <div> 
        <form method='GET' action=''> 
         <input type='text ' name='q' placeholder='search' value="{{request.GET.q}}"/> 
         <input type='submit' value=' Search '/> 
        </form> 
        <table class="table" > 
         <thead> 
         <tr> 
          <th></th> 
          <th>ID</th> 
          <th data-hide="phone">Full Name</th> 
          <th data-hide="phone">Agency Name</th> 
          <th data-hide="phone">Date Of Birth</th> 
          <th data-hide="phone">Agency Code</th> 
          <th data-hide="phone">Agent Status </th> 
          <th class="text-right">Action</th> 
         </tr> 
         </thead> 
         {% for obj in object_list %} 
         <tbody> 
         <tr> 
          <td><input type="checkbox" name="instance" value="{{obj.id}}" > 
          <td> 
          <a href='#' data-toggle="collapse" value="{{obj.id}}"> 
           {{ obj.id }} 
          </td> 
          <td><a href='#demo' data-toggle="collapse">{{ obj.Full_Name }}</a></td> 
          <td><a href="#demo" data-toggle="collapse">{{ obj.Agency_Name}}</a></td> 
          <td><a href="#demo" data-toggle="collapse">{{ obj.Date_of_Birth}}</a></td> 
          <td><a href="#demo" data-toggle="collapse">{{ obj.Agency_Code}}</a></td> 
          <td><a href="#demo" data-toggle="collapse"><span class="label label-primary">{{ obj.Agent_Status}}</span></a></td> 
          <td class="text-right"> 
          <!-- <div class="btn-group"> 
           <a href='{{ obj.get_absolute_url }}' class="badge badge-warning" role="button">View</a> 
           <a href="{% url 'customer:Agent_Edit' obj.id %}" class="badge badge-info" role="button">Edit</a> 
           <a href="{% url 'customer:Agent_Delete' obj.id %}" class="badge badge-danger" role="button">Delete</a> 
           </div> --> 
          <a href='{{ obj.get_absolute_url }}' class="btn btn-warning btn-circle" type="button"><i class="fa fa-list-alt" aria-hidden="true"></i></a> 
          <a href="{% url 'customer:Agent_Edit' obj.id %}" class="btn btn-info btn-circle" type="button"><i class="fa fa-pencil-square-o" aria-hidden="true"></i></a> 
          <a href="{% url 'customer:Agent_Delete' obj.id %}" class="btn btn-danger btn-circle" type="button"><i class="fa fa-trash" aria-hidden="true"></i></a> 
          </td> 
         </tr> 
         </tbody> 
         {% endfor %} 
         <tfoot> 
         <tr> 
          <td colspan="7"> 
          <ul class="pagination pull-right"></ul> 
          <input type="submit" name="delete" value="Delete Items" /> 
          </td> 
         </tr> 
         </tfoot> 
        </table> 
        </div> 
       </div> 
       </div> 
      </div> 
      <div id="demo" class="collapse" value="{{obj.Full_Name}}"> 
       <div class=" col-md-5 col-lg-5 "> 
       {% for obj in object_list %} 
       <table class="table table-user-information"> 
        <tbody> 
        <tr> 
         <td> Full Name :- </td> 
         <td>{{ obj.Full_Name }}</td> 
        </tr> 
        <tr> 
         <td>Date of Birth :-</td> 
         <td>{{ obj.Date_of_Birth }}</td> 
        </tr> 
        <tr> 
         <td>Phone Number:-</td> 
         <td>{{ obj.Phone_Number }}</td> 
        </tr> 
        <tr> 
         <td>Account Number :- </td> 
         <td>{{ obj.Account_Number}} </td> 
        </tr> 
        <tr> 
         <td>PAN Number :- </td> 
         <td>{{ obj.PAN_Number }} </td> 
        </tr> 
        <tr> 
         <td>Aadhaar Number :-</td> 
         <td>{{ obj.Aadhaar_Number }}</td> 
        </tr> 
        <tr> 
         <td>Agent Name :- </td> 
         <td>{{ Agent_Name }}</td> 
        </tr> 
        <tr> 
         <td>Agency Name :- </td> 
         <td>{{ Agency_Name }} </td> 
        </tr> 
        <tr> 
         <td>Agency Code :- </td> 
         <td>{{ Agency_Code }} </td> 
        </tr> 
        <tr> 
         <td>Agent Status :- </td> 
         <td>{{ Agent_Status }} </td> 
        </tr> 
        </tbody> 
       </table> 
       {% endfor %} 
       </div> 
      </div> 
      </div> 
     </div> 
     <div class="footer" > 
      <div><strong>Copyright</strong></div> 
     </div> 
     </div> 
    </div> 
    </body> 

請告訴暗示

+0

可能重複http://stackoverflow.com/questions/2417127/how-do-i-get-the-values-of-all-selected-checkboxes-in-a-django-request-post – chatuur

+0

我khow如何獲得複選框value.but我didnot沒有如何刪除複選框值\ – damini

回答

0

好的,讓我們一步一步來完成。

1)您希望Agent_Delete函數從前端接收數據(要刪除的對象的ID列表)。所以你需要在urls.py中註冊一個url函數(我假設你已經完成了這個)。

這應該像在urls.py如下:

from .views import * 

urlpatterns = [ 
    url(r'^delete_agent/$', Agent_Delete), 
... #Along with other urls 
] 

2)從你想的POST數據到你上面創建的視圖前端。要發佈數據,你需要一個表單。所以,封裝表格。它應該看起來像這樣:

<form action="{% url 'delete_agent'%}" method="POST"> 
{% csrf_token %} <- You will need to pass this token 

<!--Table with checkboxes goes here--> 
... 

</form> 

現在,你有一個表單將嘗試POST輸入到映射到視圖的特定URL。讓我們來處理這個視圖。

@csrf_exempt #Add this too. 
def Agent_Delete(request, id=None): 

    if request.method == 'POST': #<- Checking for method type 
     id_list = request.POST.getlist('instance') 
    #This will submit an array of the value attributes of all the     
    #checkboxes that have been checked, that is an array of {{obj.id}} 

     # Now all that is left is to iterate over the array fetch the 
     #object with the ID and delete it. 

     for agent_id in id_list: 
      Agent.objects.get(id=agent_id).delete()