我希望在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/

10-16 16:15
查看更多