在不同的django应用程序中导入模型时出错

时间:2013-12-30 19:26:44

标签: python django importerror python-import

祝你生活愉快,富有成效。我有以下django项目。

geoedu/
├── geoedu
│   ├── __init__.py
│   ├── __init__.pyc
│   ├── settings.py
│   ├── settings.pyc
│   ├── urls.py
│   └── wsgi.py
├── geoedu.sublime-project
├── geoedu.sublime-workspace
├── manage.py
├── school
│   ├── __init__.py
│   ├── __init__.pyc
│   ├── models.py
│   ├── models.pyc
│   ├── tests.py
│   └── views.py
└── student
    ├── __init__.py
    ├── __init__.pyc
    ├── models.py
    ├── models.pyc
    ├── tests.py
    └── views.py

(顺便说一下,我喜欢树命令)。我的学校应用程序有一个名为School

的课程
class School(models.Model):
    #fields

并且学生应用程序有一个名为Student的模型,该模型具有学校的外键。所以在我的学校/ models.py

from school.models import School

class Student(models.Model):
    #name and other personal data fields
    school = models.ForeignKey(School, related_name='school')

所以学生只属于一所学校,但某所学校可以有很多学生。但是当尝试执行sqlall命令以查看是否一切正常时,我收到导入错误

./manage.py sqlall school
ImportError: cannot import name School

./manage.py sqlall student
ImportError: cannot import name School

如果我注释掉外键字段并且导入一切正常。为什么不看进口?所有项目文件夹都是使用django-admin命令从终端创建的,而应用程序则是从头开始使用manage命令。

sublime项目文件如下

{
    "folders":
    [
        {
           "follow_symlinks": true,
           "path": "."
        }
   ]
}

1 个答案:

答案 0 :(得分:1)

原因是您的模型结构中有导入循环。使用"school.School"的模型名称ForeignKey可以解决此问题。或者你可以重新考虑你的模特'设计。