Hello,

I don't quite get the code in your method: 'MyUserManager.create_user':
    user.set_password(self.cleaned_data["password"])

You're in your Manager method but call self.cleaned_data ?

You can set a breakpoint inside your method with pdb to see
what's going on with your fields?


On 11/12/2015 04:11 PM, Benjamin Smith wrote:
I have my own custom User model, and its own Manger too.

Models:

    class MyUser(AbstractBaseUser, PermissionsMixin):
        email = models.EmailField(max_length=255, unique=True)
        first_name = models.CharField(max_length=35)
        last_name = models.CharField(max_length=35)
        username = models.CharField(max_length=70, unique=True)
        date_of_birth = models.DateField()
        is_active = models.BooleanField(default=True)
        is_admin = models.BooleanField(default=False)

        @property
        def is_staff(self):
            return self.is_admin

        def get_full_name(self):
            return ('%s %s') % (self.first_name, self.last_name)

        def get_short_name(self):
            return self.username

        objects = MyUserManager()
        USERNAME_FIELD = 'email'
        REQUIRED_FIELDS = ['first_name', 'last_name', 'username',
    'date_of_birth']


Manager:

    class MyUserManager(BaseUserManager):
        def create_user(self, email, first_name, last_name, username,
    date_of_birth, password=None, **kwargs):
            if not email:
                raise ValueError('User must have an email address')

            user = self.model(
                email=self.normalize_email(email),
                first_name=first_name,
                last_name=last_name,
                username=username,
                date_of_birth=date_of_birth,
                **kwargs
            )
    user.set_password(self.cleaned_data["password"])
            user.save(using=self._db)
            return user

        def create_superuser(self, email, first_name, last_name,
    username, date_of_birth, password, **kwargs):
            user = self.create_user(
                email,
                first_name=first_name,
                last_name=last_name,
                username=username,
                date_of_birth=date_of_birth,
                password=password,
                is_superuser=True,
                **kwargs
            )
            user.is_admin = True
            user.save(using=self._db)
            return user


Everything works when creating a new user without any errors. But when I try to login I can't. So I checked the user's email and password to confirm. Then I noticed that the password is displayed as plain text (eg. *strongpassword)*, and when changed the admin form to get the hashed password using *ReadOnlyPasswordHashField()* I get an error inside the password field, even though I used *set_password()* for the Manger inside the *create_user()* function.

    /Invalid password format or unknown hashing algorithm/


However, if I manually do *set_password('strongpassword')* for that user inside the console, then only the password is hashed. Could you please help me solve this problem. Thank you.
--
You received this message because you are subscribed to the Google Groups "Django users" group. To unsubscribe from this group and stop receiving emails from it, send an email to [email protected] <mailto:[email protected]>. To post to this group, send email to [email protected] <mailto:[email protected]>.
Visit this group at http://groups.google.com/group/django-users.
To view this discussion on the web visit https://groups.google.com/d/msgid/django-users/CAM4YLWJNGdSj-rVAuhta_UA50Cjna8zg-c14FPxK%3DtdU49mngQ%40mail.gmail.com <https://groups.google.com/d/msgid/django-users/CAM4YLWJNGdSj-rVAuhta_UA50Cjna8zg-c14FPxK%3DtdU49mngQ%40mail.gmail.com?utm_medium=email&utm_source=footer>.
For more options, visit https://groups.google.com/d/optout.

--
aRkadeFR

--
You received this message because you are subscribed to the Google Groups "Django 
users" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To post to this group, send email to [email protected].
Visit this group at http://groups.google.com/group/django-users.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/django-users/5644AE3A.5050609%40arkade.info.
For more options, visit https://groups.google.com/d/optout.

Reply via email to