创建自定义用户时,Django AbstractBaseUser与BaseUserManager

时间:2017-07-18 04:26:03

标签: django

我有一个带有特定字段的django应用程序,所以我决定创建一个新的用户模型。我正在彻底地遵循文档,但我无法将AbstractBaseUserBaseUserManager延伸到csvkit

1)为什么我需要扩展两个类来创建单个用户模型。我想知道我们在MyUserManagerMyUser中指定的字段是否相似 2)MyUserManagerMyUser或两者中的电子邮件字段here之间是否有相似之处?

在我的应用程序中,我想使用手机号码(Charfield max_length = 12)作为登录既不是电子邮件也不是用户名

3)Django提供了如何使用电子邮件创建自定义用户模型 那么我还有另一个具体的问题,我还需要在create_user以及create_superuserAbstractBaseUser模型中指定移动字段。

如果您提供带有USERNAME_FIELD移动电话号码的摘录,那将非常有用。

我知道这些是基本的django问题,但如果你想创建一个自定义用户模型,你可能会多次遇到这些问题

1 个答案:

答案 0 :(得分:0)

回答问题1 你需要扩展两个类,因为Django有两个用户类。一个是showModal模型,另一个是showModal。对于简单的任务,我们不需要修改经理类。但为了您的目的,您确实需要它。请注意,经理类没有任何字段名称,而是有两种方法。一种方法用于创建常规用户,另一种方法用于创建超级用户。使用sharedRating等命令时会调用这些方法。

在Django文档中建议扩展用户类的最佳方法是创建另一个类以获取额外信息。请参阅this answer

回答问题2 <{1}}课程中没有User字段,请仔细查看。

回答问题3 如果我是你,我只会将手机号码保存在UserManager字段中。这样,作为USERNAME_FIELD的移动设备的所有后台任务都已经完成。但是,如果您想扩展您的用户类,那么我想您必须在管理器类方法中提及移动字段,因为它们用于创建用户。

注意: - 请查看python manage.py createsuperuser并使用它来验证您的手机号码。这将检查提供手机号码的用户是否具有正确的格式。我猜你的系统会通过短信网关API将代码作为短信发送给用户的手机。您不希望在由于用户错误而未收到的短信上浪费钱。