我遇到一个问题,即我的数据库已更新为与两个id相同的值,即使它们按照下面的示例不同: 假设当我单击提交时,我输入的是id 1的输入-P_350 =“ try_1” id 2-P_350 =“ try_2”,则这两个id都具有相同的“ try_2”值。 您为克服这种情况所提出的建议。
对于数据库更新,我具有以下view.py:
ids = request.POST.getlist("id")
qs = fp.objects.filter(id__in=ids)
P_350 = request.POST["P_350"]
P_450 = request.POST["P_450"]
updates = {}
if len(P_350) > 1:
updates['P_350'] = P_350
if len(P_450) > 1:
updates['P_450'] = P_450
if updates:
qs.update(**updates)
这是我的html文件输入部分:
<td style="display:none;">
<input name="id" type="text" value={{ field.id }} >
</td>
<td width="650">
{{ field.FP_Item }}
</td>
{% if field.P_350|length == 0 %}
<td style="display:none;">
{% else %}
<td>
{% endif %}
<input name="P_350" type="text" value={{ field.P_350 }} >
</td>
{% if field.P_450|length == 0 %}
<td style="display:none;">
{% else %}
<td>
{% endif %}
<input name="P_450" type="text" value={{ field.P_450 }} >
</td>
答案 0 :(得分:1)
逻辑错误
如果在相同的输入P_350上放置不同的值,这将在到达后端时获得您放置的最后一个值,您应该将第一个值放在P_350中,第二个值放在P_450中。
在您的示例中,您仅操作P_350 2次...因此P_450将永远不会更新,因为他没有新值。
如果您有与P_350相关的多个输入,则应首先获取所有输入,然后发送到后端(如异步的AJAX),或将多个具有不同名称的P_350放置在后端,并在保存每个P_350时将其处理
https://medium.com/@taranjeet/adding-forms-dynamically-to-a-django-formset-375f1090c2b0