django用户使用电子邮件作为pk - hack可能吗?

时间:2017-02-28 10:22:51

标签: python django authentication

我读了很多关于这个主题的内容,但没有找到任何听起来像我的想法那样令人满意的东西,也不明白为什么它会引起问题。所以,如果你能看一眼......

我想在项目中期更改用户身份验证,即避免使用自定义用户模型,因为这需要在首次迁移之前完成。

我是否可以将电子邮件字段修改为editable=False中的django.contrib.user.models并添加修改后的save(),以便从用户名更新电子邮件?或者反过来说?临

另一个一般性问题:我会在venv中做这些事情,还是可以将整个auth-folder复制为本地应用程序?

1 个答案:

答案 0 :(得分:2)

首先,你的头衔似乎与你的问题无关;这是一件好事,因为使用电子邮件作为主键是一个非常糟糕的主意。人们一直在改变电子邮件地址,但PK必须保持不变。

其次,你绝对不应该复制contrib.auth代码。除了其他任何事情,这不会解决你的迁移问题,它只会让他们变得更糟。

更好的解决方案是在User上添加预保存信号,您可以在项目的任何位置执行此操作(最好是在AppConfig ready方法中)。并且您不需要更改模型以使电子邮件不可编辑;你应该在使用该模型的表格中这样做。