I am making a custom user model using the AbstractBaseUser and
PermissionsMixin by following these two tutorials (tutorial-1
<http://blackglasses.me/2013/09/17/custom-django-user-model/> and tutorial-2
<http://musings.tinbrain.net/blog/2014/sep/21/registration-django-easy-way/>
).

This my model so far:

class User(AbstractBaseUser, PermissionsMixin):
    email = models.EmailField('email address', unique=True, db_index=True)
    username = models.CharField('username', unique=True, db_index=True)
    joined = models.DateField(auto_now_add=True)
    is_active = models.BooleanField(default=True)
    is_admin = models.BooleanField(default=False)
    is_staff = models.BooleanField(default=False)

    USERNAME_FIELD = 'email'

    def __unicode__(self):
        return self.email


Now what I am confused about is that in tutorial-1
<http://blackglasses.me/2013/09/17/custom-django-user-model/>, the author
didn't made any custom manager for the custom User model. Instead he use
forms for creating user.

class RegistrationForm(forms.ModelForm):
    email = forms.EmailField(label = 'Email')
    password1 = forms.CharField(widget = forms.PasswordInput(), label =
"Password")
    password2 = forms.CharField(widget = forms.PasswordInput(), label =
'Retype password')

    class Meta:
        model = User
        fields = ['email', 'username', 'password1', 'password2']

    def clean(self):
        """
        Verify that the values entered into the password fields match
        """
        cleaned_data = super(RegistrationForm, self).clean()
        if 'password1' in self.cleaned_data and 'password2' in
self.cleaned_data:
            if self.cleaned_data['password1'] !=
self.cleaned_data['password2']:
                raise ValidationError("Password don't match.")
        return self.cleaned_data

    def save(self, commit=True):
        user = super(RegistrationForm, self).save(commit=False)
        user.set_password(self.cleaned_data['password1'])
        if commit:
            user.save()
        return user


But in tutorial-2
<http://musings.tinbrain.net/blog/2014/sep/21/registration-django-easy-way/>,
its author made a custom manager for the custom User model.

class UserManager(BaseUserManager):

    def create_user(self, email, password, **kwargs):
        user = self.model(
            email=self.normalize_email(email),
            is_active=True,
            **kwargs
        )
        user.set_password(password)
        user.save(using=self._db)
        return user

    def create_superuser(self, email, password, **kwargs):
        user = self.model(
            email=email,
            is_staff=True,
            is_superuser=True,
            is_active=True,
            **kwargs
        )
        user.set_password(password)
        user.save(using=self._db)
        return user


Referencing with Django Docs, there's an example
<https://docs.djangoproject.com/en/1.8/topics/auth/customizing/#a-full-example>
of custom user model, and it uses custom manager. My question is, whether
it is ok not to make any other custom manager and if not what is the use of
creating a custom manager?

-- 
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 django-users+unsubscr...@googlegroups.com.
To post to this group, send email to django-users@googlegroups.com.
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/CAM4YLWL4LNTdPdPwffTv0X0NvLMZmJRgrMboHqO7XajBPQW6FA%40mail.gmail.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to