In my case, I need to have one user group which email and password will not be set on user creation. They will not require to auth themselves either.
I managed to do custom user with a nullable email, but I cannot find a way to allow blank password in API call or Django admin forms. I do not really care much about forms, but I need to have it working via API.
How could I allow to create a new custom user with a blank password and maybe set it to something meaningful if it comes blank (like set_unusable_password())?
Thanks!
My CustomUserManager
:
from django.contrib.auth.base_user import BaseUserManager
from django.utils.translation import ugettext_lazy as _
class CustomUserManager(BaseUserManager):
def create_user(self, email, password, **extra_fields):
email = self.normalize_email(email)
user = self.model(email=email, **extra_fields)
# if password == "":
# user.set_password(None)
# else:
user.set_password(password)
user.save()
return user
def create_superuser(...
You can base your CustomUser on
AbstractUser
and useset_password
Thanks to that, you have access to the function
set_password
. Any user based on CustomUser will inherit :And if you look closely
make_password
you will realize it possible to give itNone
:You could check the full example on Django to have a starting point with a
Manager
Your model will look like :
UPDATE after you upload your Manager :
You forgot the
password=None
in your create_user. That is why you have this error required.