如何使用django-graphql-auth的自定义用户模型



我在项目中使用graphql,希望在注册时生成令牌。尽管django-graphql-auth具有所有的书面变体,但它使用了不同的用户模型。但我想使用我的自定义用户模型。我该怎么办?这是我的用户模型

class CustomUser(AbstractUser):
"""
Customized User Model
"""
email = models.EmailField(blank=True, null=True,
max_length=256, unique=True)
mobile_no = models.CharField(
max_length=20, blank=True, null=True, unique=True)
verification_code = models.CharField(max_length=6)
code_valid_till = models.DateTimeField(blank=True, null=True)
timezone = models.CharField(max_length=40, blank=True, null=True)
country = models.CharField(max_length=20, default='BD', choices=COUNTRIES)
pin_verified = models.BooleanField(default=False)
email_verified = models.BooleanField(default=False)
modified_on = models.DateTimeField('date modified', auto_now=True)
created_on = models.DateTimeField(auto_now_add=True)
# For password reset
reset_verification_code = models.CharField(
max_length=6, blank=True, null=True)
reset_code_valid_till = models.DateTimeField(blank=True, null=True)
reset_request = models.BooleanField(default=False)
reset_valid_till = models.DateTimeField(blank=True, null=True)
class Meta:
verbose_name_plural = "User"
def __str__(self):
if not self.is_anonymous:
return "{} - {}".format(self.mobile_no, self.email)
else:
return "Anon"
@property
def get_full_name(self):
return super().get_full_name()
def get_all_permissions(self, obj=None):
return super().get_all_permissions(obj=obj)
def send_email(self, subject, message, to_email: list, from_email=None, **kwargs):
send_mail_to_user(subject, message, from_email, to_email, **kwargs)

我是这个包的作者。现在文档站点在quickstart中有了一个自定义用户模型,您可以在这里看到它目前,还没有关于如何将其与自定义用户模型一起使用的文档,但这已经是一个悬而未决的问题,您可以在此处查看。我将粘贴Github上的相同答案。

来自Django文档:

在项目中期中更改为自定义用户模型

创建数据库表后更改AUTH_USER_MODEL是明显更困难,因为它影响外键和例如,许多对许多关系。

因此,请确保在启动项目时创建自定义用户模型。

将以下内容添加到自定义用户模型中

遵循Django自定义用户模型。

from django.contrib.auth.models import AbstractUser
class CustomUser(AbstractUser):
# ...
USERNAME_FIELD = "<username_filed_name>" # e.g: "username", "email"
EMAIL_FIELD = "<email_field_name>" # e.g: "email", "primary_email"

在设置中添加自定义用户模型

请参阅此处了解更多信息。

# settings.py
AUTH_USER_MODEL = 'myapp.CustomUser'

如果您有其他问题,请告诉我:(


编辑:在注册中添加mobile_no

使用REGISTER_MUTATION_FIELDS或REGISTER-MUTATION-FIELDS_OPTIONAL。

# settings.py

GRAPHQL_AUTH = {
# ...
REGISTER_MUTATION_FIELDS = [
# ...
'mobile_no'
]
# or
REGISTER_MUTATION_FIELDS_OPTIONAL = ['mobile_no']
# You can set the graphene base scalars:
REGISTER_MUTATION_FIELDS = {
"email": "String",
"username": "String",
"mobile_no": "String",
}
}

最新更新