gpt4 book ai didi

python - Django 2.0 访问模型(CREATE/REMOVE/FILTER)独立 [没有 manage.py shell]

转载 作者:太空狗 更新时间:2023-10-30 01:04:30 25 4
gpt4 key购买 nike

我有一个 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 [Django 2.0+] 上。

已使用正确的设置,( myProject.settings)

  • 正确配置所有其他内容后,出现以下错误:

    • RuntimeError:模型类 apps.base.models.MyModel 未声明显式 app_label 并且不在 INSTALLED_APPS 中的应用程序中。

设置:

完整的 GitHub 链接在这里:https://github.com/teratzu/Razred-Management

最佳答案

我看到当前项目结构中的两个问题。

缺少 AppConfig

正如其他答案所建议的那样,您需要提供一个 AppConfig 子类来注册您的应用程序;见Configuring applications Django 文档中的部分。

但是,拥有一个用于命名空间声明的 apps 包是完全没问题的,尤其是当您计划拥有多个应用程序时;事实上,this is what Django does itself ,将所有电池应用程序捆绑在 django.contrib 命名空间下。在我的工作中,我们还使用通用命名空间来组织 Django 应用程序:mycompany.internal.someappmycompany.customers.otherapp 等。

因此您不需要移动文件。只需正确引用 apps.base:创建一个包含以下内容的文件 apps/base/apps.py:

# apps/base/apps.py
from django.apps import AppConfig


class MyBaseAppConfig(AppConfig):
name = 'apps.base'

现在在设置中引用应用 apps.base 创建的配置类:

# DzenanElvir/settings/base.py

INSTALLED_APPS = [
...
# Local apps
'apps.base.apps.MyBaseAppConfig',
]

如果 apps 应该是一个包,把它当作一个包

因此,您声明了 apps 包(通过在 apps 目录中放置一个 __init__.py 文件)。但是,您从不使用该包,而是通过向其添加 apps 目录来摆弄 sys.path。如果应用程序应该可以在 apps.base 下导入,请删除 DzenanElvir/settings.base.py 中的路径调整行:

# remove this line:
path.append(os.path.join(PROJECT_ROOT, "apps"))

并在整个应用程序中使用正确的导入,替换:

  • 来自 .models来自 apps.base.models
  • 来自 .forms来自 apps.base.forms
  • 来自 .pregledView来自 apps.base.pregledView
  • 来自 .postsView来自 apps.base.postsView

另外,别忘了替换

urlpatterns = [
url(r'', include('base.urls')),
...
]

urlpatterns = [
url(r'', include('apps.base.urls')),
...
]

DzenanElvir/urls.py 中,你应该可以开始了。

关于python - Django 2.0 访问模型(CREATE/REMOVE/FILTER)独立 [没有 manage.py shell],我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51088835/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com