首页 > 解决方案 > 自动将用户令牌分配给自定义配置文件模型 django rest 框架

问题描述

我目前有一个信号,可以在用户注册网站时自动为他们创建一个 Token 对象。

我还有一个自定义用户模型,UserProfileInfo其中我有一个将令牌连接到用户的字段 token = models.OneToOneField(Token,related_name='token',on_delete=models.CASCADE,blank=True,null=True) 但是,我希望在创建 userprofileinfo 时自动分配它,这发生在信号中。

@receiver(post_save, sender=User)
def create_auth_token(sender, instance, created, **kwargs):
    if created:
        token = Token.objects.create(user=instance)
        UserProfileInfo

@receiver(post_save, sender=User)
def create_or_update_user_profile(sender, instance, created, **kwargs):
    if created:
        UserProfileInfo.objects.create(user=instance)
    else:
        instance.userprofileinfo.save()

第一个信号创建一个令牌,第二个创建 userprofileinfo

我想知道如何在创建 userprofileinfo 时自动为用户分配令牌。

标签: pythondjangopython-3.xdjango-modelsdjango-rest-framework

解决方案


您可以在一种信号方法中拥有这两项任务的代码。

您可以做的是,首先创建您的 UserProfileInfo 对象,然后为用户创建一个令牌。

@receiver(post_save, sender=User)
def create_or_update_user_profile(sender, instance, created, **kwargs):
    if created:
        UserProfileInfo.objects.create(user=instance)
        token = Token.objects.create(user=instance)
    else:
        instance.userprofileinfo.save()

推荐阅读