首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Django以外的django模型

Django以外的django模型
EN

Stack Overflow用户
提问于 2018-02-27 18:54:20
回答 1查看 2.6K关注 0票数 8

我有一个非django项目,我想将django模型用于数据访问层。

requirements.txt中添加了模型库

django-model-utils==3.1.1

并将其设置如下:

代码语言:javascript
运行
复制
from django.conf import settings
from django.db import models

settings.configure(
  DATABASE_ENGINE='django.db.backends.mysql',
  DATABASE_NAME='***',
  DATABASE_USER='***',
  DATABASE_PASSWORD='***',
  DATABASE_HOST='***',
  DATABASE_PORT='***')

class Bus(models.Model):
  class Meta:
    db_table = 'my_custom_bus'

  bus_name = models.CharField(max_length=20)
  bus_description = models.CharField(max_length=100)

但是,当我运行上面的代码时,我得到了以下错误:django.core.exceptions.AppRegistryNotReady: Apps aren't loaded yet.

为了修复上面的错误,我运行了:

代码语言:javascript
运行
复制
import django  
django.setup()

现在,当我尝试的时候,我得到:

Bus doesn't declare an explicit app_label and isn't in an application in INSTALLED_APPS

我是在这里缺少了一些设置,还是只有python中的轻量级模型?

EN

回答 1

Stack Overflow用户

发布于 2018-12-20 06:58:54

(这是个老问题,但我会回答,也许能帮到别人。)

选项1(建议)

看到评论,你提到:

在我的特殊情况下,sqlalchemy很适合从apis下载数据并保存在数据库中的一组脚本。

在某些情况下(如您所提到的),您可以使用django管理命令。例如,如果您想执行一些与django模型相关的任务,并且应该在后台运行。就像一些crontab作业一样,比如每5分钟更新一次数据库字段,或者执行与一些apis相关的脚本,这些apis应该运行和更新数据库模型。

为此,创建如下所示的管理命令:

  • 在您的应用程序中,创建一个文件夹management。然后向其添加一个空的__init__.py文件。接下来,在该文件夹中创建另一个名为commands的文件夹,然后将另一个空__init__.py添加到commands文件夹中。现在在commands文件夹中创建脚本文件。例如,test_script.py
  • 现在,在test_script.py中添加以下内容: 从django.core.management.base导入BaseCommand类命令(BaseCommand):def句柄(self,*args,**kwargs):#在这里添加脚本代码。
  • 现在要运行它,只需执行以下命令:python manage.py test_command
  • 欲了解更多细节,请阅读此链接

选项2

对于python sqlalchemy,有一个强大的ORM。如果不想使用django的任何部分或创建另一个django,并将非django项目的代码添加到其中,则可以使用它。但是请记住,您也需要用sqlalchemy定义django模型设计。但要做到这一点并不难。

选项3

正如我的朋友们在评论中建议的那样,您可以配置另一个项目,将您现有的django项目作为应用程序使用。遵循在Django之外使用Django数据库层?

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49015994

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档