指定应用时在 Django 中导入损坏的模型 verbose_name
Broken models imports in Django when specifying app verbose_name
我正尝试按照此处文档中的指示在我的 Django 1.7 项目中自定义应用程序名称:https://docs.djangoproject.com/en/1.7/ref/applications/#for-application-authors
我想我已经按照说明完成了,但现在我无法将模型从一个应用程序导入到另一个应用程序,例如:
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" 的应用程序的具体案例(我唯一的一个到目前为止已修改):
__init__.py
default_app_config = 'apps.cliente.apps.ClienteConfig'
apps.py
from django.apps import AppConfig
class ClienteConfig(AppConfig):
name = 'apps.cliente'
verbose_name = "Clienti e prodotti cliente"
回溯:
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
这里有什么问题我看不到?
好的,建议的文件名 "apps.py" 似乎以某种方式欺骗了这种奇怪的行为。也许我的应用程序目录也称为 "apps"(如 Two Scoops of Django 中所建议)会产生混淆。
只需将 apps.py 文件重命名为 config.py 并修复 __init__.py 相应地像这样:
__init__.py
default_app_config = 'apps.cliente.config.ClienteConfig'
成功了。
我正尝试按照此处文档中的指示在我的 Django 1.7 项目中自定义应用程序名称:https://docs.djangoproject.com/en/1.7/ref/applications/#for-application-authors
我想我已经按照说明完成了,但现在我无法将模型从一个应用程序导入到另一个应用程序,例如:
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" 的应用程序的具体案例(我唯一的一个到目前为止已修改):
__init__.py
default_app_config = 'apps.cliente.apps.ClienteConfig'
apps.py
from django.apps import AppConfig
class ClienteConfig(AppConfig):
name = 'apps.cliente'
verbose_name = "Clienti e prodotti cliente"
回溯:
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
这里有什么问题我看不到?
好的,建议的文件名 "apps.py" 似乎以某种方式欺骗了这种奇怪的行为。也许我的应用程序目录也称为 "apps"(如 Two Scoops of Django 中所建议)会产生混淆。
只需将 apps.py 文件重命名为 config.py 并修复 __init__.py 相应地像这样:
__init__.py
default_app_config = 'apps.cliente.config.ClienteConfig'
成功了。