gpt4 book ai didi

python - Django 模型 id 不会通过 for 循环更改

转载 作者:行者123 更新时间:2023-12-01 08:28:26 24 4
gpt4 key购买 nike

所以我的 Django 模板中有一个 for 循环,它循环遍历我的产品模型中的产品。产品模型有一个 amount 属性,当用户单击“添加”按钮时,该属性应该会发生更改。我制作了一个隐藏表单,用于启动 upvote 方法,该方法接受请求和 pk 并将 amount 属性增加 1。

问题是,当我点击添加按钮时,只有两种产品的数量增加。我无法增加其余产品的金额属性。

<小时/>

这是 Django 模板代码:

<div class="card-deck d-flex justify-content-start container-fluid">
{% for product in products %}
<div class="card lead m-3" style="min-width: 18rem;">
<div class="card-body">
<h5 class="card-title">{{ product.name }}</h5>
<h6 class="card-subtitle mb-2 text-muted">{{ product.product_id }}</h6>
<hr>
<p class="card-text">
Expiration date: {{ product.expiration_date }}
</p>
<p class="card-text">
amount: {{ product.amount }} <a href="javascript:{document.getElementById('upvote').submit();}"><button class="btn btn-primary btn-sm">+</button></a>
</p>

<p class="card-text">
tags:
{% for t in product.tag.all %}
<span class="badge badge-primary">{{ t.name }}</span>
{% endfor %}
</p>
</div>
</div>
<form action="{% url 'upvote' pid=product.id %}" method="POST" id="upvote">
{% csrf_token %}
<input type="hidden">
</form>

这是views.py文件中的upvote方法:

def upvote(request, pid):
if request.method == "POST":
product = get_object_or_404(models.Product, pk=pid)
product.amount += 1
product.save()
return redirect('home')

最佳答案

最终会出现多个具有相同 id 的元素(upvote),这是不允许的,并且 Javascript 代码始终使用第一个 form 它找到并提交该元素。

要拥有唯一的表单 ID,请更改以下行

<form action="{% url 'upvote' pid=product.id %}" method="POST" id="upvote">

<form action="{% url 'upvote' pid=product.id %}" method="POST" id="upvote_{{ product.id }}">

以及以下行

<a href="javascript:{document.getElementById('upvote').submit();}">

<a href="javascript:{document.getElementById('upvote_{{ product.id }}').submit();}">

关于python - Django 模型 id 不会通过 for 循环更改,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54067220/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com