跨多个项目/微服务的 Django 模型。如何?

2023-12-23

我想知道如何解决多个(独立的)django 项目/微服务之间的模型结构共享。例如:

  1. 项目:API
  2. 项目:用户仪表板
  3. 项目:管理仪表板
  4. 项目:统计

每个项目都使用相同的 django 模型。有没有一种正确的方法来解决这个问题?


Django 的基本思想是将整个应用程序功能耦合在一起,但这不适用于您的情况。这是一个风格和意见问题,这是我在类似情况下所做的。

将应用程序功能拆分为两个项目巢穴:

mysite
   |
   | - db_access
   |         | --- app1
   |                 | ---- models.py
   |                 | ---- db_api.py
   |         | --- app2
   |                 | ---- models.py
   |                 | ---- db_api.py
   | - service
   |         | --- app1
   |                 | ---- urls.py
   |                 | ---- views.py
   |         | --- app2
   |                 | ---- urls.py
   |                 | ---- views.py

db_access 部分有模型,并且db_api.py具有查询、获取对象等功能,因此您不需要查询模型,而是查询 db_api。

代替

item = app1.models.Items.objects.get(user=request.user)

Use

item = app1.db_api.get_first_item(user=request.user)

这种风格可以让你一起共享数据库和模型访问,而每个服务消耗它需要的东西,然后将其用于 API、网站等。如果某个服务以其他服务不(也不会)的方式消耗一些数据使用,然后将此查询放在服务代码中,否则放在 db_api.py 中。

这更像是传统的分层应用程序,但它确实有效。

另外一点,同一个项目可以使用twogit 存储库,一个用于 db_access(所有服务拉取),一个用于特定服务。所以每个 django 项目实际上都是 db_access 存储库,而服务存储库 - wsgi 并不关心,当然,项目代码是否来自两个存储库。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

跨多个项目/微服务的 Django 模型。如何? 的相关文章

随机推荐