Если вы просто хотите очистить свое поле, вам не нужно определять совершенно новое поле, вы можете сделать это в методе clean_username формы
class RegisterForm(forms.Form):
username = forms.CharField(max_length=30, min_length=4)
...
...
def clean_username(self):
username = self.cleaned_data['username']
try:
user = User.objects.get(username=username)
except User.DoesNotExist:
return username
raise forms.ValidationError(u'%s already exists' % username )
def clean(self):
# Here you'd perform the password check
...
Вы можете также рассмотреть возможность использования django-registration для регистрации пользователя в Django, это делается в подключаемом приложении, которое будет обрабатывать все проверки, создания и настройки пользователей.
Что касается нового создания, то метод clean () вашего поля должен возвращать очищенное значение, а не просто печатать его.
class MyField(forms.CharField):
def clean(self, value):
# perform cleaning
return value