Django中的用户名仅限于max_length=30
,自Django 1.5+以来,也可以使用USERNAME_FIELD
进行设置。
但是,目前尚不清楚现有username
字段如何保持原样(具有所有功能),而只更改max_length
。我假设需要某种猴子补丁,但是正确的方法并不是立竿见影的。
这个问题并不是涉及1.5之前版本的现有问题的重复,而是询问一个非常具体的猴子补丁,目前在SO上的任何其他问题中都没有解决。
答案 0 :(得分:0)
目前,我已经使用了以下猴子补丁,似乎有效:
from django.contrib.auth.forms import UserCreationForm
from django.contrib.auth.models import AbstractUser
class MyUser(AbstractUser):
pass
USERNAME_LENGTH = 50
MyUser._meta.get_field('username').max_length = USERNAME_LENGTH
MyUser._meta.get_field('username').validators[0].limit_value = USERNAME_LENGTH
MyUser._meta.get_field('username').validators[1].limit_value = USERNAME_LENGTH
UserCreationForm.base_fields['username'].max_length = USERNAME_LENGTH
UserCreationForm.base_fields['username'].validators[0].limit_value = USERNAME_LENGTH