11/11/2013, 06:21
|
| | | Fecha de Ingreso: marzo-2012
Mensajes: 96
Antigüedad: 12 años, 7 meses Puntos: 1 | |
Respuesta: Modelo usuario personalizado y migraciones Hola, haciendo pruebas durante el fin de semana resulta que hacer una migracion antes del syncdb es imposible pero el syncdb no intento crear un superusuario, me dio tiempo de hacer la migracion seguidamente y el problema viene al intentar crear el superusuario con el comando django createsuperuser que da este error:
NameError: global name 'username' is not defined
He mirado en github el codigo de createsuperuser para ver si veo que ha podido pasar, he revisado mi modelo, pero al menos de momento no se me ocurre nada, en el modelo no uso username pero indico que el campo de nombre de usuario es el campo email, y username en createsuperuser es una variable que por lo que creo entnedi recoge el campo que se indica como nombre de usuario.
Creo que la parte del createsuperuser donde se para es en:
user_data[self.UserModel.USERNAME_FIELD] = username
Pues todo lo anterior si lo hace de pedirme el email, la clave, etc.
El codigo del modelo:
Código:
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
__________________ JHG
Última edición por jhg; 11/11/2013 a las 06:23
Razón: Con la tonteria del captcha luego no salia la web tuve que dar atras y desaparecio el codigo final
|