The problem I have not to extend Django's model is that I need to create more than one type of user in particular two Student and Teacher each with attributes in common but with others own of each one, someone could give me some idea or example.
Model.py
from django.db import models
from django.contrib.auth.models import AbstractUser
from django.db import models
from django.db.models.signals import post_save
from django.dispatch import receiver
from Perfiles import settings
class User(AbstractUser):
is_estudiante = models.BooleanField(default=False)
is_profesor = models.BooleanField(default=False)
def get_estudiante_profile(self):
estudiante_profile = None
if hasattr(self, 'estudianteprofile'):
estudiante_profile = self.estudianteprofile
return estudiante_profile
def get_profesor_profile(self):
profesor_profile = None
if hasattr(self, 'profesorprofile'):
profesor_profile = self.profesorprofile
return profesor_profile
class Meta:
db_table = 'auth_user'
class EstudianteProfile(models.Model):
user = models.OneToOneField(User, on_delete=models.CASCADE)
anno = models.IntegerField(default=0)
carrera = models.CharField(max_length=64)
class ProfesorProfile(models.Model):
user = models.OneToOneField(User, on_delete=models.CASCADE)
departamento = models.CharField(max_length=64)
asignatura = models.CharField(max_length=64)
@receiver(post_save, sender=settings.AUTH_USER_MODEL)
def create_profile_for_new_user(sender, instance, **kwargs):
if instance.is_estudiante:
profile = EstudianteProfile(user=instance)
profile.save()
elif instance.is_profesor:
profile = ProfesorProfile(user=instance)
profile.save()