Vote count: 0
I need to change the user model field id's type from integer to uuid. So I have extended the base django model as follows. Now the user details saving without the password. Password field remains blank. Following is my user model.
import uuid
from django.contrib.auth.models import Group, Permission
from django.db import models
from django.contrib.auth.models import (
BaseUserManager, AbstractBaseUser
)
from django.utils.translation import ugettext_lazy as _
from django.utils import six, timezone
from django.core import validators
class MyUserManager(BaseUserManager):
def create_user(self, email, password=None):
"""
Creates and saves a User with the given email, date of
birth and password.
"""
if not email:
raise ValueError('Users must have an email address')
user = self.model(
email=self.normalize_email(email)
)
user.set_password(password)
user.save(using=self._db)
return user
def create_superuser(self, email, password):
"""
Creates and saves a superuser with the given email, date of
birth and password.
"""
user = self.create_user(
email,
password=password
)
user.is_admin = True
user.save(using=self._db)
return user
class User(AbstractBaseUser):
id = models.UUIDField(primary_key=True, default=uuid.uuid4, editable=False)
first_name = models.CharField(max_length=256, blank=True)
last_name = models.CharField(max_length=256, blank=True)
email = models.EmailField(
verbose_name='email address',
max_length=255,
unique=True,
)
"""
Some fields commented
"""
objects = MyUserManager()
USERNAME_FIELD = 'email'
def get_full_name(self):
# The user is identified by their email address
return self.email
def get_short_name(self):
# The user is identified by their email address
return self.email
def __str__(self):
return self.email
Is there anything missing in my model?
asked 36 secs ago
Django extended user model not saving password
Aucun commentaire:
Enregistrer un commentaire