Я хочу добавить определенное поле в моей таблице - PullRequest
0 голосов
/ 27 апреля 2019

У меня есть два ученика и учителя 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()

Я не знаю, как добавить дополнительную информацию о типе пользователя. Я не мог сохранить экземпляр учителя и ученика как отдельную таблицу. а также профиль не работал

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...