Автоматическое назначение токена пользователя для модели пользовательского профиля django rest framework - PullRequest
1 голос
/ 17 марта 2020

В настоящее время у меня есть сигнал, который автоматически создает объект токена для пользователя, когда они регистрируются на веб-сайте.

У меня также есть пользовательская модель пользователя, 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.

1 Ответ

1 голос
/ 17 марта 2020

Вы можете иметь код для обеих задач в одном методе сигнала.

Что вы можете сделать, это сначала создать свой объект 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()
...