Save() запрещена для предотвращения потери данных из-за несохранения связанного объекта 'student'

Я воссоздаю проект Django. Я пытаюсь создать сигнал post_save, который будет создавать оценки студента, когда студент создан. Я получаю сообщение об ошибке: save() запрещено для предотвращения потери данных из-за несохраненного связанного объекта 'student'. Вот моя модель студента:

class Student(models.Model):
user = models.OneToOneField(User, on_delete=models.CASCADE, null=True, blank=True)
class_id=models.ForeignKey(Class, on_delete=models.CASCADE, null=True, blank=True, default=1)
col = models.CharField(max_length=50, null=True, blank=True, default=science_college)
name = models.CharField(max_length=100, null=True, blank=True)
sex= models.CharField(max_length=50, choices=SEX_TYPE, null=True, blank=True)
DOB=models.DateField(default="1998-01-01", null=True, blank=True)
created = models.DateTimeField(auto_now_add=True)
SID=models.CharField(('STUDENT_ID'), max_length=30, default=student_ids, unique=True, editable=False)
id = models.IntegerField(primary_key=True, editable=False)

def __str__(self):
    return self.name

А вот код сигнала

def create_marks(sender, instance, created, **kwargs):
if created:
    if hasattr(instance, 'name'):
        ass_list = instance.class_id.assign_set.all()
        for ass in ass_list:
            try:
                StudentCourse.objects.get(student=instance, course=ass.course)
            except StudentCourse.DoesNotExist:
                sc=StudentCourse(student=instance, course=ass.course)
                sc.save()
                sc.marks_set.create(name='CAT 1')
                sc.marks_set.create(name='CAT 2')
                sc.marks_set.create(name='CAT 3')
                sc.marks_set.create(name='SEMESTER EXAM')

    elif hasattr(instance, 'course'):
        student_list = instance.class_id.student_set.all()
        cr = instance.course 
        for s in student_list:
            try:
                StudentCourse.objects.get(student=s, course=cr)   
            except StudentCourse.DoesNotExist:
                sc = StudentCourse(student=s, course=cr)
                sc.save()
                sc.marks_set.create(name='CAT 1')
                sc.marks_set.create(name='CAT 2')
                sc.marks_set.create(name='CAT 3')
                sc.marks_set.create('SEMESTER EXAM')

post_save.connect(create_marks, sender=Student)
Вернуться на верх