【发布时间】:2015-11-18 12:10:36
【问题描述】:
我正在使用 Django 1.6 和 South。数据库中已经有一些数据。如何安全地迁移到更长的用户名字段?
【问题讨论】:
标签: django django-south
我正在使用 Django 1.6 和 South。数据库中已经有一些数据。如何安全地迁移到更长的用户名字段?
【问题讨论】:
标签: django django-south
你可以使用,或者至少借用这个想法:https://github.com/madssj/django-longer-username-and-email
基本上,您创建一个迁移,在其中使用 `db.alter_column' 更改 contrib.auth.User 模型的 CharField 的 max_length 属性,将其设置为您需要的最高值。
然后,您需要在 django 加载您的模型时对 User 模型进行猴子补丁,您可以简单地执行以下操作:
from django.core.validators import MaxLengthValidator
username = User._meta.get_field("username")
username.max_length = <the new length you want to use>
map(lambda v: v.limit_value: <the new length>,
filter(lambda v: isinstance(v, MaxLengthValidator),
username.validators)
【讨论】: