使用 Django-rest-auth 创建新用户时创建自定义用户模型
Creating custom user model when a new user is created with Django-rest-auth
我正在使用 Django-rest-auth 构建 DRF 应用程序以实现社交登录。
我现在遇到的问题是我想扩展我的用户模型,但我担心如果我更改用户身份验证模型迁移将完全破坏我的项目,因为 rest-auth link.
所以我的选择是创建一个 UserData 字段并通过一对一字段将其挂接到 User。但是,我不确定如何在每次通过 Django-rest-auth api 注册或创建新用户时实例化一个新的 UserData 对象并将其 link 给用户。
如有任何帮助和建议,我们将不胜感激。
看来 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 应用程序以实现社交登录。 我现在遇到的问题是我想扩展我的用户模型,但我担心如果我更改用户身份验证模型迁移将完全破坏我的项目,因为 rest-auth link.
所以我的选择是创建一个 UserData 字段并通过一对一字段将其挂接到 User。但是,我不确定如何在每次通过 Django-rest-auth api 注册或创建新用户时实例化一个新的 UserData 对象并将其 link 给用户。
如有任何帮助和建议,我们将不胜感激。
看来 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 的情况下不确定它是哪个)- 只需确保它是正确的。