我必须仅在 Django 的应用程序中创建模型,而不是直接在项目中创建模型吗?

问题描述 投票:0回答:1

我创建了一个这样的项目:

$ 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
1个回答
0
投票

为了建立一个前提,我会这样说:基于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

参考文献

© www.soinside.com 2019 - 2024. All rights reserved.