Как вызвать сигналы для модели User при каждом обновлении профиля в django?

Я использую сигналы для создания профиля каждый раз, когда создается учетная запись пользователя. Это работает нормально. Он также обновляет профиль при изменении имени пользователя. Проблема в том, что я хотел редактировать имя_пользователя и фамилию_пользователя только при редактировании профиля, поэтому я попробовал использовать сигналы, в которых приемником теперь является модель CustomUser. Но я не думаю, что делаю это правильно.

# accounts/models.py

class CustomUser(AbstractUser):
    age = models.IntegerField(null=True, blank=True)
    bio = models.TextField(null=True, blank=True)
    

    class Meta:
        unique_together = [['first_name', 'last_name']]

# pages/models.py

class Profile(models.Model):
    user = models.OneToOneField(CustomUser, on_delete=models.CASCADE, blank=True, null=True)
    first_name = models.CharField(max_length=200, blank=True, null=True)
    last_name = models.CharField(max_length=200, blank=True, null=True)

# accounts/signals.py

@receiver(post_save, sender=Profile)
def update_profile(sender, instance, created, **kwargs):
    if not created:
        print("Custom user updated!")
    
# pages/signals.py

@receiver(post_save, sender=CustomUser)
def create_profile(sender, instance, created, **kwargs):
    if created:
        Profile.objects.create(user=instance)
        print("Profile created!")
    
    
@receiver(post_save, sender=CustomUser)
def update_profile(sender, instance, created, **kwargs):
    if not created:
        instance.profile.save()
        print("Profile updated!")

Вернуться на верх