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

标签 python django python-3.x django-models

我有一个 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/

相关文章:

python - 如何强制 sklearn CountVectorizer 不删除特殊字符(即 #、@、$ 或 %)

python - 从列表中确定最新日期

python - 解析 json 响应时对象不可调用 python

python - 路径中存在包的 ModuleNotFoundError

python - 如何将使用 PIL/pillow 创建的嵌入图像作为电子邮件发送 (Python 3)

user-interface - 我如何添加或导入 pyqt 和 sip 到 Python

python - 如何使用 scipy.io.savemat 附加到 .mat 文件?

python - Django 表单和初始值

django - 在Django-Celery中停止/清除定期任务

python - 在 Django 中序列化外键对象