Как вызвать сигналы для модели 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!")