我可以将Django的auth_user.username字段更改为100个字符而不会破坏任何内容吗?

Arp*_*Rai 8 django django-authentication

在某人将此问题标记为此问题的副本之前,django的auth_user.username可以是varchar(75)吗?怎么可能这样呢?关于SO的其他此类问题,请阅读此问题.我联系到的问题是准确地提出这个问题,但不幸的是,答案没有解决所提出的问题.

我可以通过执行以下操作将auth_user.username字段更改为100个字符:

  1. 在DB中为用户名字段运行ALTER表
  2. 在这里更改max_length: username = models.CharField(_('username'), max_length=30, unique=True, help_text=_("Required. 30 characters or fewer. Letters, numbers and @/./+/-/_ characters"))

如果我这样做,它会破坏Django中的任何东西吗?

当我将Django更新为更高版本时,这将破坏不是问题.我也不是在考虑编写其他身份验证方法.我只是想知道如果我这样做,我是否会破坏任何东西.

Ski*_*Ski 20

您需要在几个地方修补max-length:模型字段的描述,表单字段的描述和最大长度验证器.最大长度验证器附加到表单字段和模型字段.

这是一个代码片段,它将修补所有内容:

https://gist.github.com/1143957(使用django 1.2和1.3测试)

更新:好消息!从django 1.5开始,您可以覆盖用户模型:自定义用户模型

  • 另外,我添加了3行让用户注册75个字符:来自django.contrib.auth.models import User User._meta.get_field_by_name('username')[0] .max_length = 75 User._meta.get_field('username' ).validators [0] .limit_value = 75 (3认同)