Документы Django (http://docs.djangoproject.com/en/dev/ref/forms/fields/) говорят, что вы можете создать подкласс django.forms.Field, если он реализует метод clean() и его метод init() принимает ядро аргументы (обязательный, метка, начальный, виджет, help_text).
Я пытался использовать код в следующем фрагменте Django: http://djangosnippets.org/snippets/907/ для реализации поля кредитной карты, но я хочу, чтобы оно не было обязательным. Установка required=false отлично работает для обычных полей, но не для подклассов полей в этом фрагменте. Чего не хватает во фрагменте? (Я думаю, что метод init() отсутствует или не принимает основные аргументы, упомянутые в документации Django, но я не уверен, как это исправить.)
Например, установив обязательное значение false для этих настраиваемых полей, форма по-прежнему требует их:
CC_number = CreditCardField(required=False)
CC_expiration_date = CCExpField(required=False)
Форма не требует этого поля (оно работает как положено):
CC_security_code = forms.IntegerField(required=False)
Спасибо за вашу помощь!