首页 > 解决方案 > 如何用列表元素索引表单集输入字段

问题描述

如何使用列表中的元素作为表单集索引而不是通用的 0、1、2 等?现在我有类似的东西:

Sizes = ["XS", "S", "M","L", "XL"]
SizesFormSet = formset_factory(SizesForm, extra=len(Sizes))

我的表单集输入字段被索引为 0,1,2... 像这样:

<td><input type="number" name="Jaune-0-quantité" id="id_Jaune-0-quantité"></td>
<td><input type="number" name="Jaune-1-quantité" id="id_Jaune-1-quantité"></td>
<td><input type="number" name="Jaune-2-quantité" id="id_Jaune-2-quantité"></td>
...

我想将它们索引为“XS”、“S”、“M”

```html
<td><input type="number" name="Jaune-XS-quantité" id="id_Jaune-XS-quantité"></td>
<td><input type="number" name="Jaune-S-quantité" id="id_Jaune-S-quantité"></td>
<td><input type="number" name="Jaune-M-quantité" id="id_Jaune-M-quantité"></td>

django 文档处理重命名表单集输入字段前缀,但不处理索引。

在此先感谢您的帮助!

标签: djangodjango-forms

解决方案


我最终这样做了,而不是使用表单集:

#views.py
formsets = []
        for couleur in Couleurs:
            formset=[]
            for taille in Tailles:
                formset.append({"name": taille+"-"+couleur, "id": "id_"+taille+"-"+couleur})
            formsets.append({"formset":formset, "couleur":couleur})
return render(request, "front/nouvel-article.html", {'form': form, 'formsets': formsets, 'collection': collection, "tailles": [""]+Tailles})

在我的模板中:

<form action="/nouvel-article/{{ collection }}" method="post" enctype="multipart/form-data">
                {% csrf_token %}
                <fieldset class="form-group">
                  <legend class="border-bottom mb-4">Détails</legend>
                  {{ form|crispy }}
                </fieldset>
                <fieldset class="form-group">
                  <legend class="border-bottom mb-4">Quantité</legend>
                  <table>
                    <thead>
                      {% for taille in tailles %}
                        <th>{{ taille }}</th>
                      {% endfor %}
                    </thead>
                    <tbody>
                      {% for formset in formsets %}
                        <tr>
                          <td>{{formset.couleur}}</td>
                          {% for field in formset.formset %}
                            <td><input type="number" name="{{ field.name }}" id="{{ field.id }}"></td>
                          {% endfor %}
                        </tr>
                      {% endfor %}
                    </tbody>
                </table>
                </fieldset>
                <div class="form-group">
                  <button class="btn btn-outline-info" type="submit">Confirmer</button>
                </div>
              </form>

推荐阅读