У меня есть два ученика и учителя user_type.
Я хочу добавить определенное поле учителям и ученикам при обновлении профиля
class UserType(AbstractUser):
user =models.OneToOneField(User, on_delete=models.CASCADE)
USER_TYPE = (
(1, 'Student'),
(2, 'Teacher'),
)
user_type = models.IntegerField(choices=USER_TYPE)
Здесь я создал модель учителя, где я могу добавить дополнительные поля для учителя
class Teacher(models.Model):
user = models.OneToOneField(User, on_delete=models.CASCADE)
user.user_type = 2
specialty = models.CharField(max_length=20)
picture = models.ImageField(upload_to = '', default = '')
#return the teacher's name
def __str__(self):
return str(self.user)
Точно так же я создал модель Студента, чтобы добавить дополнительное поле для пользователей
class Student(models.Model):
user = models.OneToOneField(User, on_delete=models.CASCADE)
user.user_type = 1
picture = models.ImageField(upload_to = '', default = '')
#return the student's name
def __str__(self):
return str(self.user)
@receiver(post_save, sender=User)
def create_user_profile(sender, instance, created, **kwargs):
if created:
if instance.user_type == 2:
Teacher.objects.create(user=instance)
elif instance.user_type == 1:
Student.objects.create(user=instance)
@receiver(post_save, sender=User)
def save_user_profile(sender, instance, **kwargs):
if instance.user_type == 2:
instance.teacher.save()
elif instance.user_type == "patient":
instance.student.save()
Я не знаю, как добавить дополнительную информацию о типе пользователя. Я не мог сохранить экземпляр учителя и ученика как отдельную таблицу. а также профиль не работал