我对Django和HTML还是很陌生,并且想创建一个客户门户,客户可以在其中管理文档。我的问题是,每行都有自己的删除按钮,但是无论我单击哪个按钮,它总是删除最上面的行,而不删除我单击的行上的按钮。我认为您只需要查看模板即可看到错误,因为它删除了“ Akte”,但不是正确的模板。
模板:
<table class="center" id="myTable" style="border:solid;border-color:white;padding-bottom:1%;padding-left:1%;margin-top:3%;border-radius:6px;width:50%">
<tr style="margin-left:30%;margin-right:30%;border:solid;border-color:white;padding-bottom:1%;padding-left:1%;margin-top:3%;border-radius:6px;color:white">
<th class="cell" onclick="sortTable(0)">Aktenbarcode</th>
<th class="cell" onclick="sortTable(1)">Ersteller</th>
<th class="cell" onclick="sortTable(2)">Startdatum</th>
<th class="cell" onclick="sortTable(3)">Kundennummer</th>
<th class="cell" onclick="sortTable(4)">Aktionen</th>
</tr>
{%for Akte in akte_list%}
<tr>
<td id="{{Akte.Aktenbarcode}}"class="cell">{{Akte.Aktenbarcode}}</td>
<td class="cell">{{Akte.user}}</td>
<td class="cell">{{Akte.Startdatum}}</td>
<td class="cell">{{Akte.kundennr}}</td>
<td class="cell">
<form action="{% url 'aktedelete' %}" method="post">
{% csrf_token %}
<input class="btn btn-primary" type="submit" value="Status anzeigen"/>
<input type="hidden" name="aktenbarcode" value="{{Akte.Aktenbarcode}}" />
<input type="hidden" name="mitglied" value="{{container}}"/>
<input type="hidden" name="benutzer" value="{{request.user.username}}"/>
<input type="hidden" name="status" value="{{status}}" />
{% if status == "O" %}
<button class="btn btn-primary" data-toggle="modal" data-target="#myModal" type="button"> Akte entfernen</button>
<!-- Modal -->
<div class="modal fade" id="myModal" tabindex="-1" role="dialog" aria-labelledby="exampleModalCenterTitle" aria-hidden="true">
<div class="modal-dialog modal-dialog-centered" role="document">
<div class="modal-content">
<div class="modal-header">
<h5 class="modal-title" id="exampleModalLongTitle" style="color:black">Akte: {{Akte.Aktenbarcode}}</h5>
<button type="button" class="close" data-dismiss="modal" aria-label="Close">
<span aria-hidden="true">×</span>
</button>
</div>
<div class="modal-body" style="color:black">
Wollen Sie diese Akte unwiderruflich aus dem Container löschen?
</div>
<div class="modal-footer">
<button type="submit" class="btn btn-primary" value="Save" onclick="form_submit()">Ja, ich bin mir sicher</button>
<button type="button" class="btn btn-secondary" data-dismiss="modal" value="Cancel">Nein</button>
</div>
</div>
</div>
</div>
<!-- ModalEnd-->
</form></td>
{% endif %}
</tr>
{% endfor %}
</table>
在我的模态课上:
Akte: {{Akte.Aktenbarcode}}
此变量还始终从第一行而不是单击按钮的行显示“ Akte”。希望您能给我一个解释,也许可以找到一个解决方案。
这是在views.py中:
def aktedelete(request):
if request.method == 'POST':
form = AkteDelForm()
z = AkteForm
container = request.POST['mitglied']
closecontainerform = CloseContainerForm
status = request.POST['status']
aktenbarcode = request.POST.get('aktenbarcode')
akte = Akte.objects.get(Aktenbarcode=aktenbarcode)
akte.delete()
akte_list = Akte.objects.filter(containerId__Containernr=container)
Anzahl_Akten =Akte.objects.filter(containerId__Containernr=container).count
return render(
request,
'app/aktentabelle.html',
{
'form':form,
'title':'About',
'akte_list':akte_list,
'anzahl':Anzahl_Akten,
'container':container,
'aktenform':z,
'status':status,
'closecontainerform': closecontainerform,
'date':datetime.now().date,
}
)
答案 0 :(得分:1)
您正在为for循环的每次迭代生成模态对话框的标记,但是没有更改id
的值。当id
应该唯一时,始终设置为myModal
。
因此,当您单击按钮时,很可能总是会看到与所遇到的第一个id
相对应的对话框。
您可以使用Django的forloop.counter
变量为每个模式赋予唯一的ID
<div class="modal fade" id="myModal-{{ forloop.counter }}"
,并在从按钮进行引用时执行相同的操作:
<button class="btn btn-primary" data-toggle="modal" data-target="#myModal-{{ forloop.counter }}"
您还必须确保表单提交处理程序onclick="form_submit()"
根据循环迭代提交正确的表单。
答案 1 :(得分:0)
如果要删除特定的行,首先必须选择object id
。
例如,使用checkboxes
或其他任何可以获取id(s)
然后,您需要在类/函数中调用此id
,并且可以编写如下内容:
Akte.objects.filter(id=id).delete()