我有一个模特project_phase
from django.db import models
from django.utils import simplejson
from core.models import pmo_review_task它引用pmo_review_task (因为它在保存ovewrite中创建了一个pmo_review_task )
from django.db import models
from datetime import datetime
from django.contrib.auth.models import User
from core.models import sc_review_task它引用引用project_phase的project_phase (因为它在保存的project_phase中创建了一个project_phase)
from django.db import models
from core.models import project_phase因此,它以project_phase导入、pmo_review_task导入、sc_review_task导入、project_phase结束,我猜它以某种方式产生了这个错误:
Unhandled exception in thread started by <bound method Command.inner_run of <django.core.management.commands.runserver.Command object at 0x010ACFB0>>
Traceback (most recent call last):
File "C:\Python27\lib\site-packages\django\core\management\commands\runserver.py", line 88, in inner_run
self.validate(display_num_errors=True)
File "C:\Python27\lib\site-packages\django\core\management\base.py", line 249, in validate
num_errors = get_validation_errors(s, app)
File "C:\Python27\lib\site-packages\django\core\management\validation.py", line 35, in get_validation_errors
for (app_name, error) in get_app_errors().items():
File "C:\Python27\lib\site-packages\django\db\models\loading.py", line 146, in get_app_errors
self._populate()
File "C:\Python27\lib\site-packages\django\db\models\loading.py", line 64, in _populate
self.load_app(app_name)
File "C:\Python27\lib\site-packages\django\db\models\loading.py", line 78, in load_app
models = import_module('.models', app_name)
File "C:\Python27\lib\site-packages\django\utils\importlib.py", line 35, in import_module
__import__(name)
File "C:\work\Portman\core\models\__init__.py", line 4, in <module>
from pmo_review_task import pmo_review_task
File "C:\work\Portman\core\models\pmo_review_task.py", line 5, in <module>
from core.models import sc_review_task
File "C:\work\Portman\core\models\sc_review_task.py", line 3, in <module>
from core.models import project_phase
File "C:\work\Portman\core\models\project_phase.py", line 4, in <module>
from core.models import pmo_review_task
ImportError: cannot import name pmo_review_task我该如何克服这一切?
发布于 2012-02-17 07:49:15
有两种方式:
django.db.models中使用get_model函数,该函数是为惰性模型导入而设计的.:'project_phase') = project_phase =get_model(“核心”)
我更喜欢第二种方法,但两种方法都可以。
发布于 2012-02-17 07:38:44
在project_phase方法中导入save。
只要代码被执行,导入就会被调用。
如果它位于全局模块命名空间中(在顶部),那么它将立即被调用,您将遇到您所描述的循环导入问题,因为一个文件导入另一个文件,该文件导入原始文件。
如果将问题导入语句放入函数中,则在导入文件时调用它。
import foo # executed upon importing this file.
def import_foo_when_called():
import foo # only executed when function is called, thus no problems when
# another module imports this file.发布于 2018-03-14 17:53:55
Django 1.9及以上
因为get_model()在django.db.models中已经在1.9中被删除。
使用django.apps.get_model()
类似问题:What is the equivalent of django.db.models.loading.get_model() in Django 1.9?
或者在引号中使用应用标签,如果您只是使用它来创建foreignkey。
而不是from core.models import project_phase
models.ForeignKey("core.project_phase")https://stackoverflow.com/questions/9324554
复制相似问题