Невозможно назначить «3»: «StudentsEnrolledSubject.Subject_Section_Teacher» должен быть экземпляром «SubjectSectionTeacher» - PullRequest
0 голосов
/ 19 февраля 2020

Django сигнал Невозможно назначить «3»: «StudentsEnrolledSubject.Subject_Section_Teacher» должен быть экземпляром «SubjectSectionTeacher». У меня есть Foreignkey Subject_Section_Teacher в StudentsEnrolledSubject 1006 связанные в SubjectSectionTeacher

в этой строке Subject_Section_Teacher = each.Employee_Users.id моя ошибка

У меня есть models.py

class StudentsEnrolledSubject(models.Model):
    Students_Enrollment_Records = models.ForeignKey(StudentsEnrollmentRecord, related_name='+', on_delete=models.CASCADE,null=True)
    Subject_Section_Teacher = models.ForeignKey(SubjectSectionTeacher, related_name='+', on_delete=models.CASCADE,null=True)
    @receiver(pre_save, sender=StudentsEnrollmentRecord)
    def get_older_instance(sender, instance, *args, **kwargs):
        try:
            instance._old_instance = StudentsEnrollmentRecord.objects.get(pk=instance.pk)
        except StudentsEnrollmentRecord.DoesNotExist:
            instance._old_instance = None

    @receiver(post_save, sender=StudentsEnrollmentRecord)
    def create(sender, instance, created, *args, **kwargs):
        if not created:
            older_instance = instance._old_instance
            if older_instance.Courses != instance.Courses or \
                    older_instance.Section != instance.Section or \
                    older_instance.Education_Levels != instance.Education_Levels:

                StudentsEnrolledSubject.objects.filter(
                    Students_Enrollment_Records=instance
                ).delete()
            else:
                return None

        teachers = SubjectSectionTeacher.objects.filter(Sections=instance.Section,
                                                        Education_Levels=instance.Education_Levels,
                                                        Courses=instance.Courses)
        for each in teachers:
            StudentsEnrolledSubject.objects.create(
                Students_Enrollment_Records=instance,
                Subject_Section_Teacher=each.Employee_Users.id)

class SubjectSectionTeacher(models.Model):
    School_Year = models.ForeignKey(SchoolYear, related_name='+', on_delete=models.CASCADE,null=True)
    Education_Levels = models.ForeignKey(EducationLevel, related_name='+', on_delete=models.CASCADE,blank=True)
    Courses= models.ForeignKey(Course, related_name='+', on_delete=models.CASCADE,null=True,blank=True)
    Sections= models.ForeignKey(Section, related_name='+', on_delete=models.CASCADE,null=True)
    Subjects= models.ForeignKey(Subject, related_name='+', on_delete=models.CASCADE,null=True)
    Employee_Users= models.ForeignKey(EmployeeUser, related_name='+', on_delete=models.CASCADE,null=True)

1 Ответ

0 голосов
/ 19 февраля 2020

Как говорится в сообщении об ошибке, вы пытаетесь присвоить целое число (идентификатор пользователя учителя) полю, которое должно быть экземпляром SubjectSectionTeacher. Все, что вам нужно сделать, это отключить .Employee_Users.id, и вы исправите эту ошибку. Я также собираюсь изменить вашу переменную each на teacher, чтобы сделать ее более понятной.

# ...
        for teacher in teachers:
            StudentsEnrolledSubject.objects.create(
                Students_Enrollment_Records=instance,
                Subject_Section_Teacher=teacher)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...