Рендеринг 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],
            }
Вернуться на верх