我创建了一个这样的项目:
$ cd dj-container
$ django-admin startproject core .
$ django-admin startapp app1
这意味着 core.apps 不存在,但 app1.apps 存在。
我想在 core 下创建模型,而不是 app1 (一些模型不是特定于应用程序的,而是特定于项目的)。我在核心下创建了一个
Country
模型,并在运行 makemigrations
时,出现此错误:RuntimeError: Model class core.models.Country doesn't declare an explicit app_label and isn't in an application in INSTALLED_APPS.
我必须在 INSTALLED_APPS 中添加
core
吗?然后也许创建 core.apps 并创建应用程序标签。我本质上是在把 core
变成 app
,我隐约认为这是一个错误的方法。或者我只是在模型中添加一个显式的 app_label ?或者我应该为我的公用表创建一个单独的应用程序?
为了建立一个前提,我会这样说:基于Django的迁移框架是如何构建的,当你定义数据的布局时,即
models
,你需要告诉Django那些models
位于哪里,所以是的您必须创建一个包并在其中添加一个模块“models
”,您的models
将驻留在其中。该包必须添加到settings.INSTALLED_APPS
。这将使 Django 能够找到这些模型。
跑步时请记住:
django-admin startproject project
您将获得一个目录
project
,其中包含一个内部目录 project
,这是一个包含模块的 Python 包:settings
、urls
、asgi
和 wsgi
。 没有任何限制,这个内部目录project
也不能被视为应用程序并具有模型等。这需要将其添加到settings.INSTALLED_APPS
。
参考文献: