如何从循环Django模型中获取每个项目的名称?我在做一个小项目,但遇到了瓶颈
<div class="row row-cols-1 row-cols-md-4 g-4 mb-4">
{% for pizza in pizzas %}
<div class="col">
<div class="card h-100">
<img src="..." class="card-img-top" alt="...">
<div class="card-body">
<h5 class="card-title">**{{pizza.name|title}}**</h5>
<p class="card-text">This is a wider card with supporting text below as a natural lead-in to additional content. This content is a little bit longer.</p>
</div>
<div class="card-footer d-flex justify-content-between">
<a href="{% url 'store:custompizza' pk=pizza.pk %}" class="btn btn-primary btn-sm" data-bs-toggle="modal" data-bs-target="#exampleModal">Customize</a>
<!-- Modal -->
<div class="modal fade" id="exampleModal" tabindex="-1" aria-labelledby="exampleModalLabel" aria-hidden="true">
<div class="modal-dialog modal-dialog-centered">
<div class="modal-content">
<div class="modal-header">
<h5 class="modal-title" id="exampleModalLabel">{{pizza.name|title}}</h5>
<button type="button" class="btn-close" data-bs-dismiss="modal" aria-label="Close"></button>
</div>
<div class="modal-body">
<div class="form-check">
<input class="form-check-input" type="checkbox" value="" id="defaultCheck1">
<label class="form-check-label" for="defaultCheck1">
Default checkbox
</label>
<div class="modal-footer">
<button type="button" class="btn btn-danger" data-bs-dismiss="modal">Cancel</button>
<button type="button" class="btn btn-warning">Add to cart</button>
</div>
</div>
</div>
</div>
<small class="fw-bold">${{pizza.price}}</small>
型号:
class pizza(models.Model):
name = models.CharField(max_length=40, blank=True)
price = models.DecimalField(decimal_places=2, max_digits=3)
def get_absolute_url(self):
return reverse("store:custompizza", kwargs={"pk": self.pk})
观点:
class PizzaList(ListView):
model = pizza
context_object_name = 'pizzas'
因此,我在这个小项目中尝试做的是,对于我循环的每个项目,我希望模态的标题是动态的,并根据我单击的项目进行更改,但它不会更改,而是继续显示第一个项目的名称。
因此,在所有内容都循环并显示在页面上后,我单击一个按钮,在这种情况下,它是自定义按钮,在任何项目上激活模态,并在模态的顶部,我得到存储在数据库中的第一个项目的标题,而不是特别想要显示的。例如:
如果我点击菠萝卡的自定义按钮,它会显示第一个项目的标题,平原。不是我想要的菠萝味。我已经附上了一张照片,以防我没有准确地解释自己
我尝试使用get_absolute_url()和一个pk来获取每个项目的标题,但它不起作用,我一直在获取我点击的任何项目的第一个项目的名称。有人能给我指路吗?我是Django的新手,似乎在这方面遇到了障碍。
1条答案
按热度按时间tyg4sfes1#
问题在于你在HTML中使用模态id的方式。
在这段HTML中:
您需要使模态ID对于pizza的每次迭代都是唯一的。您可以使用forloop计数器或pizza对象的id(这将是唯一的)来完成此操作。就像这样: