我希望在django用户模型中为用户名字段添加255个字符的最大长度。我还想增加first_name和last_name字段的最大长度。我浏览了很多帖子,很多文章都将Monkeypatching作为一种选择,但我无法理解。我想知道是否有可能编写自定义迁移文件并以某种方式应用它。是否可以,如果可以的话,关于实现该目标的一些指导会很棒。
注意:这似乎是重复的,但是我在SO上发现的许多帖子都是关于添加一个新字段的,可以使用User.add_to_class()
来实现。我打算更改maxlength。
最佳答案
这是Django项目所需的“大”更改,可能应该在开始而不是结束时完成。作为经历过迁移的人打破了生产系统上的用户模型,我同意@Burhan Khalid-保持contrib.auth.models.User
模型不变。
首先,让我们从Substituting a custom User model看文档中的警告:
不支持在创建表后更改此设置
通过makemigrations迁移,这将导致您不得不手动修复您的
模式,从旧的用户表中移植数据,并且可能需要手动移植
重新应用一些迁移。
我知道您想“增加”这些字段的长度,但这并不是一件小事,或者说迁移是“必须”处理的。解决此问题的“ Django方法”是添加一个满足新要求的自定义用户模型。不幸的是,这意味着如果生产服务器上已有用户数据,则必须手动处理迁移。 Customizing authentication in Django上的标准说明将为您提供帮助。
您将获得的好处是:
项目代码不受任何升级保护。默认的用户模型将没有任何自定义。
项目代码将遵循“ Django方式”,从而使其他开发人员和团队成员将来更容易使用。
我了解这可能不是您想听到的,但希望对您有所帮助。
关于python - Django,更改用户模型的用户名字段,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/36246333/