Fixed #20846 -- Decreased User.username max_length to 150 characters.
This commit is contained in:
parent
ea7542891a
commit
780bddf75b
|
@ -17,8 +17,8 @@ class Migration(migrations.Migration):
|
||||||
name='username',
|
name='username',
|
||||||
field=models.CharField(
|
field=models.CharField(
|
||||||
error_messages={'unique': 'A user with that username already exists.'},
|
error_messages={'unique': 'A user with that username already exists.'},
|
||||||
help_text='Required. 254 characters or fewer. Letters, digits and @/./+/-/_ only.',
|
help_text='Required. 150 characters or fewer. Letters, digits and @/./+/-/_ only.',
|
||||||
max_length=254,
|
max_length=150,
|
||||||
unique=True,
|
unique=True,
|
||||||
validators=[
|
validators=[
|
||||||
django.core.validators.RegexValidator(
|
django.core.validators.RegexValidator(
|
||||||
|
|
|
@ -303,9 +303,9 @@ class AbstractUser(AbstractBaseUser, PermissionsMixin):
|
||||||
"""
|
"""
|
||||||
username = models.CharField(
|
username = models.CharField(
|
||||||
_('username'),
|
_('username'),
|
||||||
max_length=254,
|
max_length=150,
|
||||||
unique=True,
|
unique=True,
|
||||||
help_text=_('Required. 254 characters or fewer. Letters, digits and @/./+/-/_ only.'),
|
help_text=_('Required. 150 characters or fewer. Letters, digits and @/./+/-/_ only.'),
|
||||||
validators=[
|
validators=[
|
||||||
validators.RegexValidator(
|
validators.RegexValidator(
|
||||||
r'^[\w.@+-]+$',
|
r'^[\w.@+-]+$',
|
||||||
|
|
|
@ -21,12 +21,19 @@ Fields
|
||||||
|
|
||||||
.. attribute:: username
|
.. attribute:: username
|
||||||
|
|
||||||
Required. 254 characters or fewer. Usernames may contain alphanumeric,
|
Required. 150 characters or fewer. Usernames may contain alphanumeric,
|
||||||
``_``, ``@``, ``+``, ``.`` and ``-`` characters.
|
``_``, ``@``, ``+``, ``.`` and ``-`` characters.
|
||||||
|
|
||||||
|
The ``max_length`` should be sufficient for many use cases. If you need
|
||||||
|
a longer length, please use a :ref:`custom user model
|
||||||
|
<specifying-custom-user-model>`. If you use MySQL with the ``utf8mb4``
|
||||||
|
encoding (recommended for proper Unicode support), specify at most
|
||||||
|
``max_length=191`` because MySQL can only create unique indexes with
|
||||||
|
191 characters in that case by default.
|
||||||
|
|
||||||
.. versionchanged:: 1.10
|
.. versionchanged:: 1.10
|
||||||
|
|
||||||
The ``max_length`` increased from 30 to 254 characters.
|
The ``max_length`` increased from 30 to 150 characters.
|
||||||
|
|
||||||
.. attribute:: first_name
|
.. attribute:: first_name
|
||||||
|
|
||||||
|
|
|
@ -354,13 +354,20 @@ to its proxied concrete class. This inconsistency was fixed by returning the
|
||||||
full set of fields pointing to a concrete class or one of its proxies in both
|
full set of fields pointing to a concrete class or one of its proxies in both
|
||||||
cases.
|
cases.
|
||||||
|
|
||||||
:attr:`AbstractUser.username <django.contrib.auth.models.User.username>` ``max_length`` increased to 254
|
:attr:`AbstractUser.username <django.contrib.auth.models.User.username>` ``max_length`` increased to 150
|
||||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||||
|
|
||||||
A migration for :attr:`django.contrib.auth.models.User.username` is included.
|
A migration for :attr:`django.contrib.auth.models.User.username` is included.
|
||||||
If you have a custom user model inheriting from ``AbstractUser``, you'll need
|
If you have a custom user model inheriting from ``AbstractUser``, you'll need
|
||||||
to generate and apply a database migration for your user model.
|
to generate and apply a database migration for your user model.
|
||||||
|
|
||||||
|
We considered an increase to 254 characters to more easily allow the use of
|
||||||
|
email addresses (which are limited to 254 characters) as usernames but rejected
|
||||||
|
it due to a MySQL limitation. When using the ``utf8mb4`` encoding (recommended
|
||||||
|
for proper Unicode support), MySQL can only create unique indexes with 191
|
||||||
|
characters by default. Therefore, if you need a longer length, please use a
|
||||||
|
custom user model.
|
||||||
|
|
||||||
If you want to preserve the 30 character limit for usernames, use a custom form
|
If you want to preserve the 30 character limit for usernames, use a custom form
|
||||||
when creating a user or changing usernames::
|
when creating a user or changing usernames::
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue