【发布时间】:2011-02-06 07:04:17
【问题描述】:
在auth_user 上运行alter table 以使username 成为varchar(75) 有什么问题吗?如果有的话,那会破坏什么?
如果您要将auth_user.username 更改为varchar(75),您需要在哪里修改django?难道只是把源码中的30改成75的问题吗?
username = models.CharField(_('username'), max_length=30, unique=True, help_text=_("Required. 30 characters or fewer. Letters, numbers and @/./+/-/_ characters"))
或者在此字段上是否有其他验证需要更改或这样做会产生任何其他影响?
请参阅下面与 bartek 的评论讨论,了解这样做的原因。
编辑:数月后回顾这一点。对于不知道前提的人:一些应用程序没有要求或不希望使用用户名,它们仅使用电子邮件进行注册和身份验证。不幸的是,在 django auth.contrib 中,用户名是必需的。您可以开始将电子邮件放在用户名字段中,但该字段只有 30 个字符,并且电子邮件在现实世界中可能很长。可能比这里建议的 75 字符更长,但 75 字符可容纳大多数正常的电子邮件地址。该问题针对的是基于电子邮件身份验证的应用程序遇到的这种情况。
【问题讨论】:
-
在编辑之前,对
auth.contrib的长时间投诉并不是问题。您对其进行了编辑以使其更加文明,但 SO 声称“投票太旧而无法更改”。 -
我把它编辑得更简洁,我很讨厌你暗示它不那么文明(?)。我正在解释询问 auth_user.username = varchar(75) 的逻辑。这是我看到很多其他人的情况,所以值得解释一下。但如果它导致人们不花时间解决问题,则不会。
-
后人注意:Django 1.5 有一些特性可以更优雅地解决这些问题。见procrastinatingdev.com/django/…
标签: django django-models django-authentication