我有一个Django项目,我想生成一些对象(从模型中)
我想要的是:独立的Python脚本创建一堆对象和/或过滤、删除。在
使用from apps.base.models import MyModel
导入模型后
按照前面的StackOverflow问题提示我无法运行脚本来设置配置。在
import os
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "myProject.settings")
import django
django.setup()
from apps.base.models import MyModel
请注意,这是在Django 2.0.6版上的。在
使用了正确的设置,(即myProject.settings
)
在正确配置了其他所有内容后,我得到以下错误:
RuntimeError: Model class apps.base.models.MyModel doesn't declare an explicit app_label and isn't in an application in INSTALLED_APPS.
设置:
{git的完整链接^在这里}
我在目前的项目结构中看到两个问题。在
缺少
AppConfig
正如另一个正确的答案所建议的那样,您需要提供一个
AppConfig
子类来注册您的应用程序;请参见Django文档中的Configuring applications部分。在但是,为名称空间声明使用
apps
包是完全可以的,特别是如果您计划有多个应用程序;实际上,this is what Django does itself将所有电池应用程序捆绑在django.contrib
命名空间下。在我的工作中,我们还使用公共名称空间来组织Django应用程序:mycompany.internal.someapp
,mycompany.customers.otherapp
等等所以你不需要移动文件。只要正确引用
apps.base
:创建一个文件apps/base/apps.py
,其内容如下:现在在设置中引用应用程序
^{pr2}$apps.base
的已创建配置类:如果
apps
应该是一个包,则将其视为一个所以您声明了
apps
包(通过在apps
目录中放置一个__init__.py
文件)。但是,您永远不会使用该包,而是通过向其添加apps
目录来修改sys.path
。{{cd7>行下的{cd7>应该是并在整个应用程序中使用正确的导入,替换:
from .models
带from apps.base.models
from .forms
带from apps.base.forms
from .pregledView
带from apps.base.pregledView
from .postsView
带from apps.base.postsView
另外,别忘了更换
与
在
DzenanElvir/urls.py
你应该可以走了。在我再次
git clone
完成了Django项目的repository并通过执行以下操作使其正常工作,而不必修改项目的结构:1。重新编写
settings.BASE_DIR
变量通常,Django项目的设置文件的文件路径是
projectname/settings.py
,但是对于分开的设置,它是projectname/settings/<env_name>.py
。在因此,
BASE_DIR
需要从以下位置进行返工:收件人:
^{pr2}$以说明项目根目录和设置文件之间的额外目录。在
2。更改
INSTALLED_APPS
中的应用程序声明:你的应用程序从
BASE_DIR
开始的虚线位置是apps.base
。将当前声明base
替换为apps.base
。在3。固定虚线路径:
如果虚线路径导致任何错误,请检查回溯,因为它将指向问题。例如,当前的
urls.py
很可能会导致问题,因为有一个指向base.urls
的虚线路径,而它应该是显式的apps.base.urls
。例如:至以下地址:
4。迁移模型
执行
./manage.py makemigrations && ./manage.py migrate
。在另外,作为补充说明,
migrations
目录不应该在.gitignore
中。阅读:Should I be adding the Django migration files in the .gitignore file?这样,我就可以在Django项目的根目录下运行以下脚本,而不会出错:
我
git clone
设计了你的Django项目的repository,并让它开始工作,执行以下操作:1。将项目的应用程序移动到项目的根目录
这是一个常见的Django标准。我所做的是
./manage.py startapp base
重新开始,然后将apps/base
目录中的所有文件/目录添加到刚刚创建的base
目录中。在项目的根目录中应该如下所示(其中DzenanElvir
&;base
是目录):在你新的
^{pr2}$base
应用程序目录中:2。将
base
应用程序添加到INSTALLED_APPS
中,以更明确的方式注意新的
base/apps.py
文件,我们将使用它的基于AppConfig
的类来声明它是一个已安装的应用程序。将INSTALLED_APPS
的'base'
声明替换为'base.apps.BaseConfig'
。在3。重新编写
settings.BASE_DIR
变量通常,Django项目的设置文件的文件路径是
projectname/settings.py
,但是对于分开的设置,它是projectname/settings/<env_name>.py
。在因此,
BASE_DIR
需要从以下位置进行返工:收件人:
以说明项目根目录和设置文件之间的额外目录。在
4。迁移模型
执行
./manage.py makemigrations && ./manage.py migrate
。在另外,作为补充说明,
migrations
目录不应该在.gitignore
中。阅读:Should I be adding the Django migration files in the .gitignore file?这样,我就可以在Django项目的根目录下运行以下脚本,而不会出错:
相关问题 更多 >
编程相关推荐