Tous,django - ajout d'attributs aux champs d'un MultiValueField/MultiWidget
J'ai réussi à obtenir MultiValueField et MultiValueWidget travailler. Mais, en dehors des "choix", je ne peux pas sembler ajouter des attributs (comme "label" ou "initial") aux sous-champs qui composent le MultiValueField.
Voici mon (simplifié) Code:
class MyMultiWidget(django.forms.widgets.MultiWidget):
def __init__(self,*args,**kwargs):
myChoices = kwargs.pop("choices",[])
widgets = (
django.forms.fields.TextInput(),
django.forms.fields.TextInput(),
django.forms.fields.Select(choices=myChoices),
)
super(MyMultiWidget, self).__init__(widgets,*args,**kwargs)
class MyMultiValueField(django.forms.fields.MultiValueField):
widget = MyMultiWidget
def __init__(self,*args,**kwargs):
myLabel = "my label"
myInitial = "my initial value"
myChoices = [("a","a"),("b","b")]
fields = (
django.forms.fields.CharField(label=myLabel),
django.forms.fields.CharField(initial=myInitial),
django.forms.fields.ChoiceField(choices=myChoices),
)
super(MyMultiValueField,self).__init__(fields,*args,**kwargs)
self.widget=MyMultiWidget(choices=myChoices)
class MyField(models.Field):
def formfield(self,*args,**kwargs):
return MyMultiValueField()
class MyModel(django.models.Model):
myField = MyField(blank=True)
MyForm = modelform_factory(MyModel)
Le "myField" champ de MyModel est presque rendu correctement dans MyForm; Il montre trois widgets: deux TextInputs et un Select. Ce dernier est limité aux choix appropriés. Mais les deux premiers n'ont pas leur étiquette ou valeur initiale définie.
Des suggestions sur ce que je fais mal?
Merci.