Django templating for loop работает для первого элемента
Не могу понять, что я делаю неправильно!!! Я создал шаблон, который имеет вид и в этом виде я создал контекстный словарь, который содержит отфильтрованные заказы для определенного пользователя, но по какой-то причине в шаблоне я создал цикл для деталей заказа с кнопкой, которая позволяет пользователю увидеть больше деталей заказа, но она работает только для первого элемента заказа
моя модель заказа
<Мое мнение:
@login_required(login_url="login")
def user_Orders(request):
user = request.user.customer
orders = Order.objects.filter(customer=user).filter(complete=True)
return render(request, 'shop/orders.html', {'orders':orders, "user":user})
мой шаблон
<h3 style="color: #0457ae;padding-left: 40px;"><u>YOUR ORDERS</u></h3>
{% for order in orders %}
<p>Order total: ${{order.total}}</p>
<p>Status: Paid</p>
<p>Transaction id/tracking number :<span id="trans_id"> {{order.transaction_id}}</span></p>
<button id="myBtn" class="btn btn-outline-primary">more details</button>
<div id="myModal" class="modal">
<!-- Modal content -->
<div class="modal-content">
<span class="close">×</span>
<center><u>More order details</u></center>
<p>shipping to :{{order.shipping}}</p>
<p>Estimated delivery: {{order.delivery}}</p>
<p>phone: {{order.phone}}</p>
</div>
</div>
{% endfor %}
</div>
На рисунках ниже показан вывод ... Я хочу, чтобы всплывающее окно появлялось для каждого заказа
Неправильно, что все кнопки имеют одинаковый id, а также они должны иметь более подходящие имена. Так, если вы измените id с myBtn на detailBtn{{order.id}}, а id для модала на detailModal{{order.id}}, и отредактируете javascript, вы можете сделать так, что клик по detailBtnX изменит класс detailModalX (измените x на число)
Каждому модалу нужен уникальный id, как сказал @Pablo Estevez.
Поэтому убедитесь, что у вас есть уникальное значение в вашем models.py
(обычно id), которое вы указали в контексте вашего представления.
Имея уникальный id,
вы можете сделать что-то вроде:
<button type="button" class="btn btn-info" data-toggle="modal" data-target="#{{something.id}}Modal">
Чтобы открыть модальное окно.
Код модала будет выглядеть примерно так (с использованием bootstrap):
<div class="modal fade" id="{{something.id}}Modal" tabindex="-1" role="dialog" aria-labelledby="detailsModalLabel" aria-hidden="true">
<div class="modal-dialog modal-xl" style="width:100%" role="document">
<div class="modal-content">
<div class="modal-header">
<h5 class="modal-title" id="detailsModalLabel">Something here</h5>
<button type="button" class="close" data-dismiss="modal" aria-label="Close">
<span aria-hidden="true">×</span>
</button>
</div>
<div class="modal-body">
<h6>Body with text</h6>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-secondary" data-dismiss="modal">Close</button>
</div>
</div>
</div>
</div>
Надеюсь, это поможет.