python - Django 应用程序是否有保留/非法名称?导入/makemigrations 无法根据应用程序名称进行工作

标签 python django

我的 Django 项目有多个应用程序,除了名为 platform 的应用程序之外,所有应用程序都没有问题。要从此应用程序导入,我需要使用完整路径,而不是直接导入它,例如:

from app.models import MyModel # Doesn't work for platform app, but it does for others

对比

from project_root.app.models import Mymodel # Have to do this only for platform app

我将名称从 platform 更改为 theplatform 并且它起作用了。导入工作没有完整路径,makemigrations 开始查找模型。唯一改变的是应用程序的名称。

我的每个应用程序都有一个 apps.py,其中有一个类继承自 AppConfig 并带有应用程序的名称,并且所有这些应用程序都位于已安装的应用程序中。我还确保添加/删除 init.py 不会造成任何困惑。我非常确定这里唯一的变量是应用程序的名称。

Django 中是否存在保留或非法的应用程序名称?如果有的话有什么地方我可以读一下吗?我知道的唯一限制是名称中不能包含破折号。

最佳答案

platform[1] 是 python 中的内置模块,并且可能在导入路径上显示在本地 platform 模块之前。

您需要通过查看sys.path(import sys)来检查您的导入路径以确定是否正确。通常 '' 首先出现,并且是您当前的工作目录,因此所有本地模块都会覆盖/隐藏系统模块。

您可以使用环境变量 PYTHONPATH 或更改 sys.path 来修改导入路径,以使您的本地平台成为找到的第一个,但我建议不要使用该名称。您将来使用的某些软件包可能希望在导入平台时获取系统模块,但无法工作。

[1]:http://docs.python.org/3/library/platform.html )

关于python - Django 应用程序是否有保留/非法名称?导入/makemigrations 无法根据应用程序名称进行工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66448607/

相关文章:

python - 当可以使用参数列表时,使用 *args 有什么意义?

php - 给定一个值表,在 "deal"中找到最好的 "group buy"

python - Django 中测试断言的可重用助手

Django 测试不会引发 CharField 的完整性错误

python - Django 在查看和下载时生成 csv 文件

mysql - 如何强制执行条件唯一性约束

python - 何时在文件底部导入模块

python - 仅当模型在 TensorFlow 中显示改进时才保存模型检查点

python - PyCrypto 使用安全可靠吗?

Django rest 框架 - 基于单个类的 View 绑定(bind)到多个 url