【问题标题】:What is the 'right' way to extend the username field length in Django 1.5+?在 Django 1.5+ 中扩展用户名字段长度的“正确”方法是什么?
【发布时间】:2014-09-27 23:10:46
【问题描述】:

Django 中的用户名仅限于max_length=30,从 Django 1.5+ 开始,也可以使用USERNAME_FIELD 设置。

但是,目前尚不清楚如何在仅更改 max_length 的同时保持现有 username 字段的完整性(及其所有功能)。我认为需要进行某种猴子修补,但正确的做法并不是立即进行。

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

【问题讨论】:

标签: django django-models django-authentication


【解决方案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

【讨论】:

    猜你喜欢
    • 2011-02-18
    • 2013-10-15
    • 1970-01-01
    • 1970-01-01
    • 2022-01-05
    • 2017-09-14
    • 2020-08-18
    • 2018-05-07
    • 1970-01-01
    相关资源
    最近更新 更多