代码之家  ›  专栏  ›  技术社区  ›  İlkem Çetinkaya

带有多个重复变量的queryset更新

  •  0
  • İlkem Çetinkaya  · 技术社区  · 7 年前

    我有一个问题,我有一个数据库更新与两个id相同的值,即使它们不同,根据我的例子如下: 你建议克服这种情况的方法。

    • 或者其他更简单的方法?

    我的数据库更新的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)
    

    <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>
    
    1 回复  |  直到 7 年前
        1
  •  1
  •   Diego Vinícius    7 年前

    错误的逻辑

    如果将不同的值放在同一个输入Pú350中,这将得到到达后端时放置的最后一个值,您可能应该将第一个值放在Pú350中,将第二个值放在Pú450中。

    在你的例子中,你只操纵PŞ350两次。。。所以Pú450永远不会更新,因为他没有新的价值。

    https://medium.com/@taranjeet/adding-forms-dynamically-to-a-django-formset-375f1090c2b0