je créé un formulaire avec plusieurs champs dynamiques (sans attributs de classe) qui sont ajoutés à self.fields
dans la fonction __init__
comme ceci:Django: forme de charge avec des champs dynamiques
class CustomForm(django.forms.Form):
def __init__(dynamic_fields, *args, **kwargs):
super(CustomForm, self).__init__(*args, **kwargs)
for name, field in dynamic_fields.items():
self.fields[name] = field
dynamic_fields = {'val1': IntegerField(), 'val2': FloatField()}
CustomForm(dynamic_fields)
Maintenant, je ne sais pas comment pour charger le formulaire après une demande POST
. Normalement, je ferais quelque chose comme:
custom_form = CustomForm(request.POST)
if custom_form.is_valid():
data = custom_form.cleaned_data
...
Mais comme les champs ne sont pas connus pour former quand super
est appelé, je ne sais pas comment charger les champs manuellement par la suite. Des idées?
Les champs sont-ils toujours pointés sur le même type de champ? – grrrrrr
non, les types de champs peuvent être de tous les types de champs django valides – Henhuy