编程语言
首页 > 编程语言> > python-从另一个django项目中与外部django项目进行交互

python-从另一个django项目中与外部django项目进行交互

作者:互联网

我正在寻找一种从单独的django项目中与django项目的模型进行交互的方法.我的意思不是说不同的应用程序,而是指2个单独的项目和2个单独的设置文件.

我正在将一个旧的网络商店(确实是旧的,都是静态html)迁移到我们基于django的后端.为此,我创建了一个单独的django应用程序,该应用程序将使用django orm和一些用于人为辅助的解析的视图来处理所有的爬网和解析.现在,我需要使用存储在搜寻器项目中的数据填充后端的目录数据.在过去的两天中,我花了大部分时间试图找出一种方法,但是没有运气.

我理想的操作是将商店项目作为模块导入django命令类,然后以这种方式进行交互(请注意,它们正在使用2个单独的设置文件,因此setup_environ无法使用).我想避免序列化搜寻器数据,然后再将其从商店中导入,或者在django的orm之外与商店数据库进行交互,因为该项目还远远没有结束,我希望尽可能保持灵活性.

你有什么建议?只要我可以在一个脚本中与两个项目的框架进行交互,我就会提出各种想法.

解决方法:

我之前已经做过…

所以,

项目A,项目B

项目B想要调用项目A中的模型…

1)项目B使用与项目A相同的用户/登录名连接到相同的数据库.

如果是这样,那么您可以将模型从项目A导入到项目B中,然后像往常一样与它们进行交互.

2)项目B连接到与项目A不同的数据库.

您可以在项目B的设置文件中定义两个数据库.

DATABASES = {
    'default': {
        'NAME': 'app_data',
        'ENGINE': 'django.db.backends.postgresql_psycopg2',
        'USER': 'postgres_user',
        'PASSWORD': 's3krit'
    },
    'users': {
        'NAME': 'user_data',
        'ENGINE': 'django.db.backends.mysql',
        'USER': 'mysql_user',
        'PASSWORD': 'priv4te'
    }
}

然后定义一个db router,以便django知道要从Project A获取模型数据的数据库

要么

您可以使用以下类似方式显式设置在进行ORM调用时使用的数据库:

Author.objects.using(‘other’).all()

标签:python,django,django-models
来源: https://codeday.me/bug/20191202/2086206.html