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)