使用 Django-rest-auth 创建新用户时创建自定义用户模型
Posted
技术标签:
【中文标题】使用 Django-rest-auth 创建新用户时创建自定义用户模型【英文标题】:Creating custom user model when a new user is created with Django-rest-auth 【发布时间】:2019-01-12 11:37:01 【问题描述】:我正在构建一个带有 Django-rest-auth 的 DRF 应用程序,用于社交登录。 我现在遇到的问题是我想扩展我的用户模型,但我担心如果我更改用户身份验证模型迁移将完全破坏我的项目,因为 rest-auth 链接。
所以我的选择是创建一个 UserData 字段并通过一对一字段将其与 User 挂钩。但是,我不确定每次通过 Django-rest-auth api 注册或创建新用户时如何实例化新的 UserData 对象并将其链接到用户。
对此的任何帮助和建议将不胜感激。
【问题讨论】:
Can Django automatically create a related one-to-one model?的可能重复 【参考方案1】:看起来 django 信号是实现这一目标的最佳方式。
您可以简单地注册一个接收器函数,该函数将在每次创建新用户(或更新模型)时调用。
在那里你可以创建你的用户数据。
例子:
from django.db.models.signals import post_save
from django.dispatch import receiver
@receiver(post_save, sender=User)
def create_user_data(sender, update_fields, created, instance, **kwargs):
if created:
# Create your user data
pass
如果刚刚创建了新实例,created 将为 True。 instance 是新的用户实例。
发件人是您的用户的模型(不确定在 django-rest-auth 的情况下是哪一个) - 只需确保它是正确的。
【讨论】:
以上是关于使用 Django-rest-auth 创建新用户时创建自定义用户模型的主要内容,如果未能解决你的问题,请参考以下文章
如何在 DRF + django-rest-auth 中使用自定义用户模型保存注册时的额外字段
有啥方法可以更改登录的 Django-rest-auth 视图?
使用 django-rest-auth 和 allauth 进行 Google 身份验证