Allowing periods (and other characters) in Django’s user model
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.