Estoy acostumbrado a primero hacer un syncdb luego los migrate apropiados pero ahora tengo duda de si podre usarlas con el modelo personalizado por como hasta hacer el migrate me imagino no llegara el modelo a estar en la base de datos pero el primer syncdb me pedira crear un superusuario, o eso creo, entonces no se si podria funcionar, etc. Como me surgio esta duda aunque tengo (o eso creo) preparado todo para usar el modelo personalizado aun no he hecho el syncdb ni he iniciado las migraciones para consultar esto a ver si alguien con más experiencia sabe algo al respecto de esto, antes de que falle algo y acabe sin saber si falla por las migraciones, por que este mal el modelo personalizado, por que este mal configurado, etc; y al final no saber ni donde he metido la pata.
En el settings añadi el middleware para que funcione la autenticacion:
'django.contrib.auth.middleware.AuthenticationMidd leware'
Y la aplicacion:
'django.contrib.auth'
Y por supuesto indique el modelo personalizado:
AUTH_USER_MODEL = 'piktul.User'
Y el modelo personalizado:
Código:
El proyecto lo estoy ejecutando sobre Python3, las migraciones con otros modelos las he probado y fucionan bien, pero este por lo que comentaba de en el primer syncdb pedir un superusuario no se si podre usarlas o como debo hacerlo por lo menos en la primera vez. from django.db import models from django.contrib.auth.models import AbstractBaseUser, PermissionsMixin, BaseUserManager from django.utils.translation import ugettext_lazy as _ from django.utils import timezone from django.core.mail import send_mail from django.contrib.auth.signals import user_logged_in def update_last_login(sender, user, **kwargs): """ A signal receiver which updates the last_login date for the user logging in. """ user.last_login = timezone.now() user.save(update_fields=['last_login']) user_logged_in.connect(update_last_login) class UserManager(BaseUserManager): def _create_user(self, email, password, is_staff, is_superuser, **extra_fields): """ Creates and saves a User with the given email and password. """ now = timezone.now() if not email: raise ValueError('The given email must be set') email = self.normalize_email(email) user = self.model(email=email, is_staff=is_staff, is_active=True, is_superuser=is_superuser, last_login=now, date_joined=now, **extra_fields) user.set_password(password) user.save(using=self._db) return user def create_user(self, email, password=None, **extra_fields): return self._create_user(email, password, False, False, **extra_fields) def create_superuser(self, email, password, **extra_fields): return self._create_user(username, email, password, True, True, **extra_fields) class User(AbstractBaseUser, PermissionsMixin): email = models.EmailField(_('email address'), max_length=254, unique=True, db_index=True, blank=True) is_staff = models.BooleanField(_('staff status'), default=False, help_text=_('Designates whether the user can log into this admin ' 'site.')) is_active = models.BooleanField(_('active'), default=True, help_text=_('Designates whether this user should be treated as ' 'active. Unselect this instead of deleting accounts.')) date_joined = models.DateTimeField(_('date joined'), default=timezone.now) objects = UserManager() USERNAME_FIELD = 'email' REQUIRED_FIELDS = [] class Meta: verbose_name = _('user') verbose_name_plural = _('users') def get_full_name(self): return getattr(self, self.USERNAME_FIELD) def get_short_name(self): return getattr(self, self.USERNAME_FIELD) def email_user(self, subject, message, from_email=None, **kwargs): """ Sends an email to this User. """ send_mail(subject, message, from_email, [self.email], **kwargs) def __str__(self): return self.email def __unicode__(self): return self.email