我一直在关注Django文档的主题Organizing models in a package,让一切都正常工作。然后,当我移动到一个新的部分,更改一个模型或添加新模型时,当我进行迁移时,当该模型对我的用户模型有一个外键时,我不断地点击ImportError。你知道吗
我正在使用一个基于django-cookie-cutter的项目,添加了新的应用程序,并重构了型号.py到目录/包。你知道吗
以下是终端输出:
(iqport) C:\dev\iqdev\iqport>python manage.py makemigrations
Loading : C:\dev\iqdev\iqport\.env
The .env file has been loaded. See base.py for more information
Traceback (most recent call last):
File "manage.py", line 29, in <module>
execute_from_command_line(sys.argv)
File "C:\Env\iqport\lib\site-packages\django\core\management\__init__.py", line 363, in execute_from_command_line
utility.execute()
File "C:\Env\iqport\lib\site-packages\django\core\management\__init__.py", line 337, in execute
django.setup()
File "C:\Env\iqport\lib\site-packages\django\__init__.py", line 27, in setup
apps.populate(settings.INSTALLED_APPS)
File "C:\Env\iqport\lib\site-packages\django\apps\registry.py", line 108, in populate
app_config.import_models()
File "C:\Env\iqport\lib\site-packages\django\apps\config.py", line 202, in import_models
self.models_module = import_module(models_module_name)
File "C:\Program Files\Python36\lib\importlib\__init__.py", line 126, in import_module
return _bootstrap._gcd_import(name[level:], package, level)
File "<frozen importlib._bootstrap>", line 978, in _gcd_import
File "<frozen importlib._bootstrap>", line 961, in _find_and_load
File "<frozen importlib._bootstrap>", line 950, in _find_and_load_unlocked
File "<frozen importlib._bootstrap>", line 655, in _load_unlocked
File "<frozen importlib._bootstrap_external>", line 678, in exec_module
File "<frozen importlib._bootstrap>", line 205, in _call_with_frames_removed
File "C:\dev\iqdev\iqport\iqport\users\models.py", line 8, in <module>
from iqport.core.models import Client
File "C:\dev\iqdev\iqport\iqport\core\models\__init__.py", line 3, in <module>
from .staffing import TeamMember
File "C:\dev\iqdev\iqport\iqport\core\models\staffing.py", line 5, in <module>
from iqport.users.models import User
ImportError: cannot import name 'User'
下面是我正在尝试生成迁移的新模型:
from django.db import models
from django.utils import timezone
from simple_history.models import HistoricalRecords
from iqport.users.models import User
from iqport.core.models.core_config import StaffRoles, Client
class TeamMember(models.Model):
staff = models.ForeignKey(User)
client = models.ForeignKey(Client)
role = models.ForeignKey(StaffRoles)
valid_from = models.DateField(auto_now=True)
valid_to = models.DateField(null=True, blank=True)
history = HistoricalRecords()
在另一个项目中,我遇到了同样的问题,只有在完成所有迁移并重新开始之后,我才克服了这个问题。这样做没有任何意义,我也不明白为什么它会抱怨导入用户模型。在PyCharm中,只有在运行make迁移时,才会验证模型代码,并且在导入时不会显示任何错误。你知道吗
除了提倡不要分裂模式之外,有人有什么建议来克服这个问题吗?蒂亚。你知道吗
编辑:注释输出:
from iqport.core.models import Client
在我的用户模型中,这一点就消失了。你知道吗
正如我在评论中提到的,这是一个循环导入错误。你知道吗
您可以尝试执行更高级别的导入,如:
并按如下方式创建外键:
终止迁移并不能解决这个问题。你知道吗
相关问题 更多 >
编程相关推荐