Overwriting save method to create entry in related table automatically django

After registration email with email confirmation is sent to a new user. I created model UserWithConfirmation with new field is_email_confirmed. I was following this https://docs.djangoproject.com/en/4.1/topics/auth/customizing/#extending-the-existing-user-model.

I want to have UserWithConfirmation created for each new user when user is saved. For now I have sth like this.

from django.db import models
from django.contrib.auth.models import User

class UserWithConfirmation(models.Model):
    user = models.OneToOneField(User, on_delete=models.CASCADE, related_name="user_with_confirmation")
    is_email_confirmed = models.BooleanField(default=False)

    def __str__(self):
        return self.user.username

class User:
    def save(self, *args, **kwargs):

        super().save(*args, **kwargs)

def create_user_with_confirmation(user):

How to make it works?

Just have UserWithConfirmation extend User

class UserWithConfirmation(User):
    is_email_confirmed = models.BooleanField(default=False)

and change the entry when the email is confirmed

I solved my problem using signals I changed UserWithConfirmation to Profile

class Profile(models.Model):
    user = models.OneToOneField(User, on_delete=models.CASCADE, related_name="profile")
    is_email_confirmed = models.BooleanField(default=False)

@receiver(post_save, sender=User)
def create_user_profile(sender, instance, created, **kwargs):
    if created:

@receiver(post_save, sender=User)
def save_user_profile(sender, instance, **kwargs):
Back to Top