Как создавать объекты с помощью метода save в классе User, который происходит от AbstractBaseUser?

Я реализую приложение магазина на Django. Я хочу создавать Klient или Producent каждый раз, когда создается объект User, выполняя команду: python manage.py createsuperuser. Модели Klient и Producent имеют OneToOneField по отношению к User и они помечены как первичные ключи. Класс User происходит от AbstractBaseUser:

class User(AbstractBaseUser):
    
    class Meta:
        indexes = [
            models.Index(fields=['imie',]),
            models.Index(fields=['nazwisko',]),
            models.Index(fields=['email',]),
            models.Index(fields=['username',]),
        ]
    
    id_user = models.AutoField(primary_key=True)
    is_producent = models.BooleanField(default=False)
    is_klient = models.BooleanField(default=False)
    imie = models.CharField(max_length=50, verbose_name="imię", default="null")
    nazwisko = models.CharField(max_length=50, default="null")

    email = models.EmailField(verbose_name="email", max_length=60, unique=True) 
    username = models.CharField(max_length=50)
    date_joined = models.DateTimeField(verbose_name='date joined', auto_now_add=True)
    last_login = models.DateTimeField(verbose_name='last login', auto_now=True)
    is_admin = models.BooleanField(default=False)
    is_active = models.BooleanField(default=True)
    is_staff = models.BooleanField(default=False)
    is_superuser = models.BooleanField(default=False)
    
    # email will be used to login
    USERNAME_FIELD = 'email'
    # when register must have username
    REQUIRED_FIELDS = ['username', 'imie', 'nazwisko', 'is_producent', 'is_klient']
    
    objects = MyAccountManager()
    
    def has_perm(self, perm, obj=None):
        return self.is_admin
    
    def has_module_perms(self, app_label):
        return True
    
    def save(self, *args, **kwargs):
        # self.pk will be None for instances that are going to be created
        created = not self.pk
        
        if created and self.is_producent == True:
            print("Producent created")
            Producent.objects.create(id_producenta=self.pk)
            
        elif created and self.is_klient == True:
            print("Klient created")
            Klient.objects.create(id_klienta=self.pk)
        
        super().save(*args, **kwargs)

Я хотел переопределить метод save в этой модели и создать там объекты, связанные с User, соответственно: если is_klient is true, то создать модель Klient. Если is_producent - true, то создать модель Producent. Однако я не могу даже запустить команду makemigrations, как будто изменения не были обнаружены.

Я также попробовал использовать другой подход, используя сигналы. Я разместил код в файле signals.py:

@receiver(post_save, sender=get_user_model())
def create_klient(sender, instance, created, **kwargs):
     if created:
         Klient.objects.create(id_klienta=instance)

Когда я выполнил команду createsuperuser, ничего не произошло.

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