Почему сигналы Django не отправляются на создание профиля пользователя для социальной регистрации или входа?

У меня есть пользовательская модель регистрации. Я использую сигналы для создания профиля пользователя, когда кто-либо регистрируется или создает аккаунт. Но мои сигналы не отправляются, когда кто-либо создает аккаунт, используя учетную запись в социальных сетях, таких как facebook, twitter и т.д. Я хочу создать профиль пользователя с помощью сигналов для социальной регистрации или входа. Я использую social-auth-app-django

#UserProfile 
class UserProfile(models.Model):
      user = models.ForeignKey(settings.AUTH_USER_MODEL,on_delete=models.CASCADE,related_name="userprofile")
      mobile = models.IntegerField(blank=True,null=True)
      country = models.CharField(max_length=200,blank=True,null=True)

class Subscriber(models.Model):
      user = models.OneToOneField(UserManagement, on_delete=models.CASCADE, primary_key=True)
      email = models.EmailField(max_length=1000) 
      first_name = models.CharField(max_length=200)
      last_name = models.CharField(max_length=200)


#subscriber_signals
@receiver(post_save, sender=Subscriber)
def user_is_created_or_save(sender,instance,created,**kwargs):
     user = instance.user
     password = instance.user.password
     username= instance.user.username
     first_name = instance.first_name
     last_name = instance.last_name
     email = instance.email
     user_id = instance.user.id
     is_subscriber = instance.user.is_subscriber
     um = UserManagement(id=user_id,email=email,username=username,password=password,first_name=first_name,last_name=last_name,is_subscriber=is_subscriber )
     um.save()
     if created:
        UserProfile.objects.create(user=user)

Поскольку пользовательская модель определена, вы не можете использовать from django.contrib.auth.models import User. Это также не рекомендуется для ссылки на модель пользователя.

Как описано в docs, если вы правильно настроили пользовательскую модель, вы можете использовать settings.AUTH_USER_MODEL для ссылки на вашу пользовательскую модель в качестве отправителя:

from django.conf import settings


@receiver(post_save, sender=settings.AUTH_USER_MODEL)
def user_is_created_or_save(sender, instance, created, **kwargs):
    ...
Вернуться на верх