Django,改变用户模型的用户名字段

时间:2016-03-27 10:30:14

标签: python django

我希望在django用户模型中为用户名字段添加最多255个字符。我还想增加first_name和last_name字段的最大长度。我看了很多帖子看到monkeypatching作为一个选项,但我无法理解它。我想知道是否可以编写自定义迁移文件并以某种方式应用它。是否可能,如果是的话,关于如何实现它的一些指导将是伟大的。

注意:它看起来像是重复的,但我在SO上找到的很多帖子都是关于添加一个可以使用User.add_to_class()实现的新字段。我打算改变maxlength。

1 个答案:

答案 0 :(得分:1)

这是Django项目所需的“大”更改,可能是应该在开始时而不是结束时完成的。如果有经验的迁移破坏了生产系统上的用户模型,我同意@Burhan Khalid - 保留contrib.auth.models.User模型。

首先让我们看看文档中的警告,来自Substituting a custom User model

  

不支持在创建表后更改此设置   通过makemigrations,将导致您必须手动修复您的   schema,从旧用户表中移植数据,并可能手动移植   重新申请一些迁移。

我知道您希望“只增加”这些字段的长度,但这不是一个微不足道的变化,也不是迁移“意味着”要处理的变化。解决此问题的“Django-way”是添加满足新要求的自定义用户模型。不幸的是,这意味着如果生产服务器上有现有用户数据,则必须手动处理迁移。 Customizing authentication in Django上的标准说明可以帮助您解决问题。

您将获得的好处是希望能够付出辛勤劳动的好处:

  • 项目代码受到保护,不会进行任何升级。默认的用户模型不会有任何自定义。
  • 项目代码将符合“Django-way”,使其他开发人员和团队成员将来更容易合作。

我明白这可能不是你想听到的,但我希望它有所帮助。