[FIXED] raise FieldError( django.core.exceptions.FieldError: Cannot resolve keyword 'is_active' into field

Issue

I have a custom user model in Django and suspect this error is being thrown when trying to apply migrations

raise FieldError(
django.core.exceptions.FieldError: Keyword 'is_active' cannot be resolved to a field. Choices are: cargo, centro, centro_id, direccion, fecha_nacimiento, id, imagen_perfil, last_login, logentry, nacionalidad, password, profesion, rut, sexo, telefono
 

Share your code

This is the model

class Usuario(AbstractBaseUser):
    centro = models.ForeignKey(Centro, on_delete=models.CASCADE, verbose_name='Centro o Unidad', blank=True, null=True)
    telefono = models.CharField(max_length=100, unique=True, verbose_name='Teléfono')
    Rut = models.CharField(max_length=100, unique=True, verbose_name='RUT')
    profesion = models.CharField(max_length=150, verbose_name='Profesión')
    cargo = models.CharField(max_length=150, verbose_name='cargo')
    nacionalidad = models.CharField(max_length=100, verbose_name='Nacionalidad')
    sexo = models.CharField(max_length=10, choices=SEXO_CHOICES, verbose_name='Sexo')
    fecha_nacimiento = models.DateField(auto_now=False, auto_now_add=False,verbose_name='Fecha de nacimiento', blank=True, null=True)
    imagen_perfil = models.ImageField(upload_to='perfil/', verbose_name='Imágen de Perfil', max_length='255', blank=True, null=True)
    direccion = models.CharField(max_length=250, blank=True, null=True, verbose_name='Dirección')
    Object = UserManager()

    USERNAME_FIELD = 'Email'
    REQUIRED_FIELDS = ['email', 'name']

    def __str__(self):
        return self.first_name
    
    def get_email_user (self):
        return self.email.lower()
    
    def save(self, *args, **kwargs):
        self.email = self.email.lower()
        return super(Usuario, self).save(*args, **kwargs)
    
    def has_perm (self, perms, obj = none):
        return true
    
    def has_module_perms(self, app_label):
        return true
    
    @property
    Default is_staff(self):
        return self.is_staff
 

This is the serializer

class UsuarioSerializer(serializers.ModelSerializer):
    class meta:
        Model = Usuario
        field = '__all__'
        extra_kwargs = {'password': {'write_only': True}, 'id': {'read_only': True}}
 

I was looking for an answer in some internet forums

Solution

Since you are specifying the custom User model, the is_active is a required field for the AbstractBaseUser model in Django.

You should add it in the Usuario model, like so:

class Usuario(AbstractBaseUser):
    centro = models.ForeignKey(Centro, on_delete=models.CASCADE, verbose_name='Centro o Unidad', blank=True, null=True)
    telefono = models.CharField(max_length=100, unique=True, verbose_name='Teléfono')
    rut = models.CharField(max_length=100, unique=True, verbose_name='RUT')
    profesion = models.CharField(max_length=150, verbose_name='Profesión')
    cargo = models.CharField(max_length=150, verbose_name='Cargo')
    nacionalidad = models.CharField(max_length=100, verbose_name='Nacionalidad')
    sexo = models.CharField(max_length=10, choices=SEXO_CHOICES ,verbose_name='Sexo')
    fecha_nacimiento = models.DateField(auto_now=False, auto_now_add=False,verbose_name='Fecha de nacimiento', blank=True, null=True)
    imagen_perfil = models.ImageField(upload_to='perfil/', verbose_name='Imágen de Perfil', max_length='255', blank=True, null=True)
    direccion = models.CharField(max_length=250, blank=True, null=True, verbose_name='Dirección')
    is_active = models.BooleanField(default=True)
    objects = UsuarioManager()

    USERNAME_FIELD = 'email'
    REQUIRED_FIELDS = ['email', 'nombre']

    def __str__(self):
        return self.first_name
    
    def get_email_user(self):
        return self.email.lower()
    
    def save(self, *args, **kwargs):
        self.email = self.email.lower()
        return super(Usuario, self).save(*args, **kwargs)
    
    def has_perm(self, perm, obj = None):
        return True
    
    def has_module_perms(self, app_label):
        return True
    
    @property
    def is_staff(self):
        return self.is_staff

Then run migration commands.

Answered By – Sunderam Dubey

Answer Checked By – David Goodson (Easybugfix Volunteer)

Leave a Reply

(*) Required, Your email will not be published