register - El objeto django-user personalizado no tiene el atributo ''has_module_perms''
how to create login in django (3)
Creo que a tu modelo le faltan algunos atributos como ''has_module_params'' ... Intenta agregar lo siguiente
class MyUser(AbstractBaseUser):
...
...
def has_perm(self, perm, obj=None):
return self.is_superuser
def has_module_perms(self, app_label):
return self.is_superuser
Mi modelo de usuario personalizado para iniciar sesión por correo electrónico:
class MyUser(AbstractBaseUser):
id = models.AutoField(primary_key=True) # AutoField?
is_superuser = models.IntegerField(default=False)
username = models.CharField(unique=True,max_length=30)
first_name = models.CharField(max_length=30, default='''')
last_name = models.CharField(max_length=30, default='''')
email = models.EmailField(unique=True,max_length=75)
is_staff = models.IntegerField(default=False)
is_active = models.IntegerField(default=False)
date_joined = models.DateTimeField(default=None)
# Use default usermanager
objects = UserManager()
USERNAME_FIELD = ''email''
REQUIRED_FIELDS = [''username'']
class Meta:
db_table = ''auth_user''
Para lo cual, soy capaz de crear con éxito un superusuario. Sin embargo, cuando intento iniciar sesión con el correo electrónico y la contraseña, aparece este error:
''MyUser'' object has no attribute ''has_module_perms''
¿Alguna idea de lo que estoy haciendo mal?
La implementación del usuario no proporciona los métodos obligatorios que se utilizarán con el módulo de administración.
Consulte https://docs.djangoproject.com/en/1.8/ref/contrib/admin/#module-django.contrib.admin .
En su caso, simplemente agregue la mezcla de permisos (PermissionsMixin), como una superclase de su modelo.
from django.contrib.auth.models import PermissionsMixin
class MyUser(AbstractBaseUser, PermissionsMixin):
# ...
Se describe aquí: https://docs.djangoproject.com/en/1.8/topics/auth/customizing/#custom-users-and-permissions .
Para aquellos que solo están ingresando en noviembre de 2017 y después, no creo que agregar o permitir que su clase herede PermissionsMixin
sea la solución, ya que generará más errores ya que usted reinventó la rueda.
Me encontré con el mismo problema esta tarde (4 de noviembre de 2017) al anular el nombre de Username
con el Phone Number
:
class MyUserManager(BaseUserManager):
..
..
def create_superuser(self, phone, password=None):
if password is None:
raise TypeError("provide password please")
myuser = self.model(phone=phone)
myuser.set_password(password)
myuser.is_admin = True
myuser.is_staff = True
myuser.save()
return myuser
Por lo tanto, http://127.0.0.1:8000/admin/
no funcionaba y el object has no attribute ''has_module_perms''
subida continuada object has no attribute ''has_module_perms''
error de object has no attribute ''has_module_perms''
, la siguiente es cómo arreglé el mío:
class MyUser(AbstractBaseUser):
..
..
def get_full_name(self):
pass
def get_short_name(self):
pass
@property
def is_superuser(self):
return self.is_admin
@property
def is_staff(self):
return self.is_admin
def has_perm(self, perm, obj=None):
return self.is_admin
def has_module_perms(self, app_label):
return self.is_admin
@is_staff.setter
def is_staff(self, value):
self._is_staff = value
Espero que esto ayude a alguien.