【问题标题】:Broken models imports in Django when specifying app verbose_name指定应用程序 verbose_name 时在 Django 中导入损坏的模型
【发布时间】:2015-01-16 09:20:54
【问题描述】:

我正在尝试自定义我的 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

这里有什么我看不到的问题?

【问题讨论】:

  • 信息不足。由于某种原因,您隐藏了应用程序目录的内容,这是重要的部分,并且您没有显示导致错误或回溯的代码。
  • @DanielRoseman 我已经添加了请求的信息。
  • 您的应用程序目录中有一个空白的__init__.py 文件吗?
  • @DanielRoseman 是的,我愿意。在我尝试重命名之前,项目中的一切都运行良好。

标签: python django


【解决方案1】:

好的,似乎建议的文件名“apps.py”以某种方式欺骗了这种奇怪的行为。也许我的应用程序目录也称为“apps”(如Two Scoops of Django 中所建议的那样)会产生混乱。

只需将 apps.py 文件重命名为 config.py 并相应地修复 __init__.py,如下所示:

__init__.py

default_app_config = 'apps.cliente.config.ClienteConfig'

成功了。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-09-30
    • 1970-01-01
    • 1970-01-01
    • 2016-03-07
    • 2016-11-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多