Python 指定应用程序详细名称时在Django中导入损坏的模型
我正在尝试自定义Django 1.7项目中的应用程序名称,如以下文档所示: 我想我已经做到了,但现在我无法将模型从一个应用导入到另一个应用,例如:Python 指定应用程序详细名称时在Django中导入损坏的模型,python,django,Python,Django,我正在尝试自定义Django 1.7项目中的应用程序名称,如以下文档所示: 我想我已经做到了,但现在我无法将模型从一个应用导入到另一个应用,例如: ImportError: No module named comune.models 我构建了我的项目,使应用程序位于目录树中更深一层,如下所示: project_root ├── apps │ ├── allegato │ ├── calendario │ ├── cliente │ ├── commessa
ImportError: No module named comune.models
我构建了我的项目,使应用程序位于目录树中更深一层,如下所示:
project_root
├── apps
│ ├── allegato
│ ├── calendario
│ ├── cliente
│ ├── commessa
│ ├── comune
│ ├── laboratorio
│ ├── recapito
│ ├── spedizione
│ ├── strumento
│ ├── taratura
│ └── tecnico
├── locale
├── media
├── project
│ ├── . . . (my project directory)
├── static
└── templates
我想这可能是导致问题的原因,但我试图修复它的努力还没有走得很远
下面是我计划为每个应用程序做的事情,我展示了一个名为“cliente”的应用程序的具体案例(到目前为止我只修改过一个):
\uuuu init\uuuuu.py
default_app_config = 'apps.cliente.apps.ClienteConfig'
from django.apps import AppConfig
class ClienteConfig(AppConfig):
name = 'apps.cliente'
verbose_name = "Clienti e prodotti cliente"
default_app_config = 'apps.cliente.config.ClienteConfig'
apps.py
default_app_config = 'apps.cliente.apps.ClienteConfig'
from django.apps import AppConfig
class ClienteConfig(AppConfig):
name = 'apps.cliente'
verbose_name = "Clienti e prodotti cliente"
default_app_config = 'apps.cliente.config.ClienteConfig'
回溯:
Traceback (most recent call last):
File "./manage.py", line 10, in <module>
execute_from_command_line(sys.argv)
File "/home/seether/.virtualenvs/mytime/lib/python2.7/site-packages/django/core/management/__init__.py", line 385, in execute_from_command_line
utility.execute()
File "/home/seether/.virtualenvs/mytime/lib/python2.7/site-packages/django/core/management/__init__.py", line 354, in execute
django.setup()
File "/home/seether/.virtualenvs/mytime/lib/python2.7/site-packages/django/__init__.py", line 21, in setup
apps.populate(settings.INSTALLED_APPS)
File "/home/seether/.virtualenvs/mytime/lib/python2.7/site-packages/django/apps/registry.py", line 108, in populate
app_config.import_models(all_models)
File "/home/seether/.virtualenvs/mytime/lib/python2.7/site-packages/django/apps/config.py", line 197, in import_models
self.models_module = import_module(models_module_name)
File "/usr/lib64/python2.7/importlib/__init__.py", line 37, in import_module
__import__(name)
File "/home/seether/Projects/mytime/apps/cliente/models.py", line 6, in <module>
from apps.comune.models import Comune, Cap
ImportError: No module named comune.models
回溯(最近一次呼叫最后一次):
文件“/manage.py”,第10行,在
从命令行(sys.argv)执行命令
文件“/home/seether/.virtualenvs/mytime/lib/python2.7/site packages/django/core/management/_init__.py”,第385行,从命令行执行
utility.execute()
文件“/home/seether/.virtualenvs/mytime/lib/python2.7/site packages/django/core/management/_init__.py”,执行中第354行
django.setup()
文件“/home/seether/.virtualenvs/mytime/lib/python2.7/site packages/django/\uuuu init\uuuuuu.py”,第21行,在安装程序中
应用程序。填充(设置。已安装的应用程序)
文件“/home/seether/.virtualenvs/mytime/lib/python2.7/site packages/django/apps/registry.py”,第108行,填充
app_config.import_models(所有_models)
导入模型中的文件“/home/seether/.virtualenvs/mytime/lib/python2.7/site packages/django/apps/config.py”,第197行
self.models\u module=导入模块(models\u module\u name)
文件“/usr/lib64/python2.7/importlib/_init__.py”,第37行,在导入模块中
__导入(名称)
文件“/home/seether/Projects/mytime/apps/cliente/models.py”,第6行,在
从apps.comune.models导入comune,Cap
ImportError:没有名为comune.models的模块
这里有什么我看不到的错误?好吧,建议的文件名“apps.py”似乎在某种程度上欺骗了这种奇怪的行为。也许我的应用程序目录也被称为“apps”(如中所建议的)会产生混乱 只需将apps.py文件重命名为config.py并相应地修复_init__uuu.py,如下所示:
project_root
├── apps
│ ├── allegato
│ ├── calendario
│ ├── cliente
│ ├── commessa
│ ├── comune
│ ├── laboratorio
│ ├── recapito
│ ├── spedizione
│ ├── strumento
│ ├── taratura
│ └── tecnico
├── locale
├── media
├── project
│ ├── . . . (my project directory)
├── static
└── templates
\uuuu init\uuuuu.py
default_app_config = 'apps.cliente.apps.ClienteConfig'
from django.apps import AppConfig
class ClienteConfig(AppConfig):
name = 'apps.cliente'
verbose_name = "Clienti e prodotti cliente"
default_app_config = 'apps.cliente.config.ClienteConfig'
成功了。几乎没有足够的信息。出于某种原因,您隐藏了应用程序目录的内容,这是重要的部分,并且您没有显示导致错误或回溯的代码。@DanielRoseman我已经添加了请求的信息。您是否在应用程序目录中有一个空白的
\uu init\uuuuuuuuuuuuupy
文件?@DanielRoseman是的,我有。在我尝试改名之前,项目中的一切都很正常。