【发布时间】:2013-12-30 19:26:43
【问题描述】:
祝您有一个快乐而富有成效的一年。我有以下 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": "."
}
]
}
【问题讨论】:
-
将
ForeignKey的模型更改为'school.School'怎么样(注意,您也可以使用字符串作为模型名称而不是实际的模型类!)。 -
它成功了!!谢谢..我知道你可以使用字符串作为模型类,但为什么导入它不起作用?
-
可能是导入中的一个循环,如果您发布您的
school/models.py,可能会告诉您更多信息。 -
是的......我在学校应用程序中有一个模型,它使用学生作为外键,学生应用程序导入学生类......不喜欢它。也许我需要更好的实施。
标签: python django importerror python-import