By default, Django's authentication middleware only allows user names with 30 characters or fewer, containing only letters, digits and underscores. What if you want to allow other user names? It's actually a very small change to admin.py:
username_regex_field = forms.RegexField ( label = "Username", max_length = 30, regex = r"^[\w'\.\-@]+$", help_text = "Required. 30 characters or fewer. Letters, apostrophes, periods, hyphens and at signs.", error_message = "This value must contain only letters, apostrophes, periods, hyphens and at signs." ) class UserCreationForm(UserCreationForm): username = username_regex_field class UserChangeForm(UserChangeForm): username = username_regex_field class UserProfileAdmin(UserAdmin): form = UserChangeForm add_form = UserCreationForm
All I'm doing here is defining a new RegexField, and then over-writing the default create and change user forms for Django auth.