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()