django - 如何用列表元素索引表单集输入字段
问题描述
如何使用列表中的元素作为表单集索引而不是通用的 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 文档处理重命名表单集输入字段前缀,但不处理索引。
在此先感谢您的帮助!
解决方案
我最终这样做了,而不是使用表单集:
#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>