ImportError: cannot import name 'GuideTeacher' from 'teacher.models'

ImportError: cannot import name 'GuideTeacher' from 'teacher.models'

我有一个教师模型和一个学术模型。当我从教师模型中导入学术模型中的内容时,我发现了一个导入错误,例如

File "/media/sajib/Work/Project/schoolmanagement/teacher/models.py", line 3, in from academic.models import Department, ClassInfo, Section, Session, Shift File "/media/sajib/Work/Project/schoolmanagement/academic/models.py", line 2, in from teacher.models import GuideTeacher ImportError: cannot import name 'GuideTeacher' from 'teacher.models' (/media/sajib/Work/Project/schoolmanagement/teacher/models.py)

现在我该如何解决这个问题? academic/models.py

from teacher.models import GuideTeacher
class ClassRegistration(models.Model):
    department_select = (
        ('general', 'General'),
        ('science', 'Science'),
        ('business', 'Business'),
        ('humanities', 'Humanities')
    )
    department = models.CharField(choices=department_select, max_length=15, null=True)
    class_name = models.ForeignKey(ClassInfo, on_delete=models.CASCADE, null=True)
    section = models.ForeignKey(Section, on_delete=models.CASCADE, null=True)
    session = models.ForeignKey(Session, on_delete=models.CASCADE, null=True)
    shift = models.ForeignKey(Shift, on_delete=models.CASCADE, null=True)
    guide_teacher = models.OneToOneField(GuideTeacher, on_delete=models.CASCADE, null=True)
    date = models.DateField(auto_now_add=True)

    class Meta:
        unique_together = ['class_name', 'section', 'shift', 'guide_teacher']

    def __str__(self):
        return str(self.class_name)

teacher/models.py

from academic.models import Department, ClassInfo, Section, Session, Shift
class GuideTeacher(models.Model):
    name = models.OneToOneField(PersonalInfo, on_delete=models.CASCADE, null=True)
    date = models.DateField(auto_now_add=True)

    def __str__(self):
        return str(self.name)

这是因为Circular Import。为了摆脱这种情况,删除academic/models.py中的import语句并使用字符串表示指定FK相关模型

guide_teacher = models.OneToOneField(<b>'teacher.GuideTeacher'</b>, on_delete=models.CASCADE, null=True)