如何使用与同一数据库交互的外部 python 包来构建 Django 项目
Posted
技术标签:
【中文标题】如何使用与同一数据库交互的外部 python 包来构建 Django 项目【英文标题】:How to structure Django project with external python packages interacting with the same database 【发布时间】:2021-06-22 14:04:53 【问题描述】:我正在开发一个 Django Rest Api,我的目标是以下结构:
django_project
│-- django_project
│--__init.py__
│-- asgi.py
│-- setting.py
│-- urls.py
│-- wsgi.py
│-- app
│-- migrations
│-- __init.py__
│-- admin.py
│-- apps.py
│-- models.py
│-- tests.py
│-- views.py
│-- manage.py
│-- media
│-- static
│-- templates
问题是我想包含一个我为数据处理开发的外部 python 包。这个包使用 slqalchemy 进行 db 映射,所以我不确定如何(以及在哪里)将它放入我的 django 项目中,因为会有重复的模型定义(使用 sqlachemy 和 Djando ORM)。
感谢您的帮助
【问题讨论】:
【参考方案1】:您可以添加任意数量的应用程序:
django_project
│-- django_project
│--__init.py__
│-- asgi.py
│-- setting.py
│-- urls.py
│-- wsgi.py
│-- app_1
│-- migrations
│-- __init.py__
│-- admin.py
│-- apps.py
│-- models.py
│-- tests.py
│-- views.py
│-- app_2
│-- __init.py__
│-- admin.py
...
│-- manage.py
│-- media
│-- static
│-- templates
其实django app可以带或不带django orm模型。你不必在设置中将python包注册为app即可在其他注册的app中导入和使用。如果我们开发 django orm 模型并使用迁移,或有信号,或 celery 任务,或 url,则需要将 python 包注册为 django app。
【讨论】:
感谢@Valery Ramusik,虽然app2 不是严格意义上的应用程序,但它是一个与数据库交互的python 包(用于数据加载和处理)。我还能把它放在 django_project 目录中吗? 可以,可以导入使用以上是关于如何使用与同一数据库交互的外部 python 包来构建 Django 项目的主要内容,如果未能解决你的问题,请参考以下文章
Django:如何使用我的模型类从 Django 外部与我的数据库进行交互?