什么是'权利'在Django 1.5+中扩展用户名字段长度的方法?

时间:2014-08-05 10:13:33

标签: django django-models django-authentication

Django中的用户名仅限于max_length=30,自Django 1.5+以来,也可以使用USERNAME_FIELD进行设置。

但是,目前尚不清楚现有username字段如何保持原样(具有所有功能),而只更改max_length。我假设需要某种猴子补丁,但是正确的方法并不是立竿见影的。

这个问题并不是涉及1.5之前版本的现有问题的重复,而是询问一个非常具体的猴子补丁,目前在SO上的任何其他问题中都没有解决。

1 个答案:

答案 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