Django Сохранение данных нескольких пользователей и двух таблиц

Я впервые задаю здесь вопрос, спасибо за приветствие. Я качок в программировании. Я работаю над проектом управления студентами на Django. Я хочу, чтобы мой проект имел несколько типов пользователей (администратор, студент, лекция). Но для меня важно, чтобы когда администратор создает нового студента/лекцию, он сохранял его одновременно в таблице User и в таблице student/lecture. Я использую пользовательскую модель пользователя. Пожалуйста, помогите мне, я пробовал, но я получаю ошибку значения, ошибку атрибута, ошибку отсутствующего значения... Я с нетерпением жду вашего ответа, спасибо.

Вот мой models.py

class Student(models.Model):
rn= models.OneToOneField(User, on_delete=models.CASCADE, primary_key=True, db_column="Roll_Number")
fn = models.TextField(db_column="First_Name")
ln = models.TextField(db_column="Last_Name")
sex = models.CharField(db_column="Sex",choices=sex_choice, default='Male', max_length=20)
sc = models.ForeignKey( School,related_name='departs',on_delete=models.CASCADE, db_column="Scholl_Institute")
dp = models.ForeignKey( Department,on_delete=models.CASCADE, db_column="Department")
year  = models.ForeignKey( Year,on_delete=models.CASCADE,db_column="Year")
tel = models.TextField(db_column="Telephone")
em = models.EmailField(verbose_name="email", max_length=100, unique=True,db_column="Email") 

def __str__(self):
    return str(f"{self.ln} {self.fn}")  

def clean_rn(self):
    if self.instance: 
        return self.instance.rn
    else: 
        return self.fields['rn']
    
def get_absolute_url(self):
    return reverse('student:update', kwargs={'id': self.pk})
def save(self, *args, **kwargs):
    try:
        default_password = make_password(self.rn)
        Student.objects.create()
        name = f"{self.ln} {self.fn}"
        User.objects.create_user(username=name, email=self.em, password=default_password)
        User.is_student = True
        User.type = "Student"
        
        super(Student, self).save()
    except IndexError:
        print('IndexError')
    except RecursionError:
        print('RecursionError')

class Lecture(models.Model):
    lid= models.OneToOneField(User, on_delete=models.CASCADE, primary_key=True,db_column="Lecture_Id")
    fn = models.TextField(db_column="First_Name")
    ln = models.TextField(db_column="Last_Name")
    sex = models.CharField(db_column="Sex",choices=sex_choice, default='Male', max_length=20)
    type = models.CharField(db_column="Type",choices=type, default='Lecture', max_length=20)
    tel = models.TextField(db_column="Telephone")
    em = models.EmailField(verbose_name="email", max_length=100, unique=True,db_column="Email") 

    def __str__(self):
        return str(f"{self.ln} {self.fn}")  
    
    def clean_lid(self):
        if self.instance: 
            return self.instance.lid
        else: 
            return self.fields['lid']
    def save(self, *args, **kwargs):
        try:
            default_password = make_password(self.lid)
            name = f"{self.ln} {self.fn}"
            #Lecture.objects.create()
            User.objects.create_user(email=self.em,username=name,  password=default_password)
            User.is_lecture =True
            User.type = "Lecture"
            super(Lecture, self).save()
        except IndexError:
            print('IndexError')
        except RecursionError:
            print('RecursionError')  

Вот моя пользовательская модель пользователя

Вот ошибка, которую я получаю: Ошибка get

Вернуться на верх