Django FormField: Как установить `max_length` и другие свойства в базовом классе

Я хотел бы установить label и max_length внутри IBANField, чтобы обобщить его и использовать в другом месте. validate_iban - это функция валидатора.

Вот что у меня есть сейчас. Это хорошо, но не то, что я хочу.

class IBANField(CharField):
    default_validators = [validate_iban]


class SepaForm(forms.Form):
    iban = IBANField(max_length=34, label=_('IBAN'))

Возможно, есть лучший способ, но вот одно из решений:

class IBANField(CharField):
    default_validators = [validate_iban]

    def __init__(self, *args, **kwargs):
        kwargs['label'] = _('IBAN')
        kwargs['max_length'] = 34
        return super().__init__(*args, **kwargs)

class SepaForm(forms.Form):
    iban = IBANField()
Вернуться на верх