全て、
MultiValueField と MultiValueWidget を機能させることができました。しかし、「選択肢」を除けば、MultiValueField を構成するサブフィールドに属性 (「ラベル」や「初期」など) を追加できないようです。
これが私の(簡略化された)コードです:
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)
MyModel の「myField」フィールドは、MyForm でほぼ正しくレンダリングされます。2 つの TextInput と 1 つの Select の 3 つのウィジェットが表示されます。後者は、適切な選択肢に制限されています。ただし、前者の 2 つは、ラベルまたは初期値が設定されていません。
私が間違っていることについて何か提案はありますか?
ありがとう。