【问题标题】:Longer username in Django, when there are already users in the databaseDjango中较长的用户名,当数据库中已有用户时
【发布时间】:2015-11-18 12:10:36
【问题描述】:

我正在使用 Django 1.6 和 South。数据库中已经有一些数据。如何安全地迁移到更长的用户名字段?

【问题讨论】:

    标签: django django-south


    【解决方案1】:

    你可以使用,或者至少借用这个想法: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)
    

    【讨论】:

    • 谢谢!我试试看。
    • 虽然此链接可能会回答问题,但最好在此处包含答案的基本部分并提供链接以供参考。如果链接页面发生更改,仅链接的答案可能会失效。
    • @Wtower 有道理,我做了更改。
    猜你喜欢
    • 2017-07-06
    • 2014-12-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-30
    • 2023-03-29
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多