我希望在django用户模型中为用户名字段添加最多255个字符。我还想增加first_name和last_name字段的最大长度。我看了很多帖子看到monkeypatching作为一个选项,但我无法理解它。我想知道是否可以编写自定义迁移文件并以某种方式应用它。是否可能,如果是的话,关于如何实现它的一些指导将是伟大的。
注意:它看起来像是重复的,但我在SO上找到的很多帖子都是关于添加一个可以使用User.add_to_class()
实现的新字段。我打算改变maxlength。
答案 0 :(得分:1)
这是Django项目所需的“大”更改,可能是应该在开始时而不是结束时完成的。如果有经验的迁移破坏了生产系统上的用户模型,我同意@Burhan Khalid - 保留contrib.auth.models.User
模型。
首先让我们看看文档中的警告,来自Substituting a custom User model:
不支持在创建表后更改此设置 通过makemigrations,将导致您必须手动修复您的 schema,从旧用户表中移植数据,并可能手动移植 重新申请一些迁移。
我知道您希望“只增加”这些字段的长度,但这不是一个微不足道的变化,也不是迁移“意味着”要处理的变化。解决此问题的“Django-way”是添加满足新要求的自定义用户模型。不幸的是,这意味着如果生产服务器上有现有用户数据,则必须手动处理迁移。 Customizing authentication in Django上的标准说明可以帮助您解决问题。
您将获得的好处是希望能够付出辛勤劳动的好处:
我明白这可能不是你想听到的,但我希望它有所帮助。