什么是“正确”的方法来扩展在Django 1.5或更高版本的用户名字段长度?(What is the

2019-10-20 15:01发布

在Django用户名被限制为max_length=30 ,并且由于Django的1.5+它们也可以通过使用设置USERNAME_FIELD

但是,目前尚不清楚该如何现有username字段可以保持完好(与它拥有的所有功能),而只改变max_length 。 我认为还需要一些猴子打补丁的,但它不是立即做什么所以正确的方式是。

这个问题不是在此之前参考版本1.5,而是询问当前没有任何其他问题解决上所以有一个非常具体的猴子补丁现有的问题重复。

Answer 1:

目前,我已经使出了以下猴子补丁,它似乎工作:

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


文章来源: What is the 'right' way to extend the username field length in Django 1.5+?