Рендеринг MultiValueField, включающий текст_помощи и метку для каждого подполя
Я использую JSONField
для представления конфигурации, которая используется в нескольких формах. Вместо стандартного виджета Textarea
я хочу отображать несколько полей, каждое из которых имеет свои собственные label
и help_text
. Я ам могу достичь этого, реализовав Form
только для конфигурации, но кажется, что также должно быть возможно (и чище) представить конфигурацию в виде MultiValueField
. К сожалению, я не могу понять, как отобразить label
и help_text
при таком подходе, поскольку эта информация, похоже, больше не доступна при отображении виджета. Что я упускаю?
class ConfigWidget(forms.MultiWidget):
template_name = 'config_widget.html'
def __init__(self, attrs=None):
widgets = [
forms.TextInput(attrs=attrs),
forms.TextInput(attrs=attrs),
]
super().__init__(widgets, attrs)
def decompress(self, value):
if isinstance(value, dict):
return [value['foo'], value['bar']]
return [None, None]
class ConfigField(forms.MultiValueField):
widget = ConfigWidget
def __init__(self, *args, **kwargs):
fields = (
forms.CharField(label='Foo', help_text='Foo help.'),
forms.CharField(label='Bar', help_text='Bar help.'),
)
super().__init__(fields=fields, *args, **kwargs)
def compress(self, data_list):
if data_list:
return {
'foo': data_list[0],
'bar': data_list[1],
}