Am I overriding the save method on the model in a wrong way in django?

前端 未结 3 598

I have a Profile model that extends the user model like so,

class Profile(User):
    user = models.OneToOneField(User, parent_link=True, on_dele         


        
3条回答
  •  遥遥无期
    2020-12-21 19:38

    You are overriding the save method correctly. You need to do more when you use the createsuperuser command.

    from django.utils.text import slugify
    from django.contrib.auth.models import UserManager
    
    
    class CustomUserManager(UserManager):
        def _create_user(self, username, email, password, **extra_fields):
            username_slug = slugify(username)
            extra_fields.setdefault('slug', username_slug)
            super()._create_user(username, email, password, **extra_fields)
    
    
    class Profile(User):
        user = models.OneToOneField(User, parent_link=True, on_delete=models.CASCADE)
        slug = models.SlugField(unique=True, blank=True)
    
        def save(self, *args, **kwargs):
            print('self.username')
            print(self.username)
            self.slug = slugify(self.username)
            super().save(*args, **kwargs)
    
        objects = CustomUserManager()
    
    

提交回复
热议问题