首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Django后端设计建议

Django后端设计建议
EN

Stack Overflow用户
提问于 2015-04-20 20:50:41
回答 2查看 242关注 0票数 4

我在工作中使用了一个用python编写的工具,我想将它移植到Django框架中,以使基于web的管理界面的编写更加无缝。我读过django教程,对如何用自己的数据库(或数据库)编写一个基本的django应用程序有了相当扎实的理解。

我在这个特定项目中遇到的困境是,我引用了多个数据源,这些数据源:

  1. 可能实际上是SQL数据库,也可能不是SQL数据库,有些数据库没有任何django后端实现(例如LDAP和Google )。
  2. 是第三方数据源,总体“模型”可能会在没有通知的情况下发生变化,我对此没有控制权.虽然他们的“模型”中我将访问的部分很可能永远不会改变。

因此,我的问题是:我是否应该把这些外部数据源看作django‘模型’?还是我最好只编写一些单独的接口类来处理这些数据源?

我可以看到在一个新的'db引擎‘中编写来处理与这些数据源的通信的可能性,所以从实际的应用程序实现中,我可以调用所有常用的方法,比如我正在查询任何数据库。理想情况下,我正在编写的应用程序的核心不需要关心它所连接到的每个数据源的实现细节--我希望使其尽可能具有可插拔性,以便将来新数据源类型的实现不会涉及到对核心代码的任何修改。

我想知道这是否是“接受”的方式--或者,对于这种自定义情况,您可以使用django后端并实现自己的自定义解决方案,以便从这些数据源中查询信息。

我希望这个问题足够清楚..。如果不是,问我你需要什么细节。谢谢!

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-04-20 20:58:34

1)也许您应该考虑烧瓶 web框架,它不像Django那样依赖于特定的ORM。因此,您不必在Django ORM模型中匹配您的数据。

2)您可以在一些定制的数据查询和操作工具中使用Django,这很好。但是你应该知道,Djangos生态系统的主要部分与Django ORM有关,如果你放弃它,它就不会起作用。

3)注意Django模型中的managed=False选项。它允许您拥有一个模型,该模型不是由syncdbmigrate之类的命令管理的。这基本上意味着,基础表不受您的控制,Django不应该更改该表并将其视为“原样”。

票数 1
EN

Stack Overflow用户

发布于 2015-04-20 22:45:18

因此,我正在考虑这个问题,我想出的一种可能性是构建Django支持的数据库(在mysql中),它代表了我从这些数据源中感兴趣的数据。

然后,我可以重写从mysql模型中查询/保存更改的模型方法,以调用我编写的外部python类,直接与数据源和相应的mysql数据库进行交互。

因此,例如,在查询调用中,我可以重写django方法,并在调用超级之前预先添加一个操作,以检查mysql记录是否“陈旧”--如果是,在继续之前请求对它们进行更新。

在更新操作中,我可以追加(在mysql表中添加更新后),这是一个请求外部类更新外部源的操作。

这是一种迂回的方式,但它确实允许我将应用程序完全保留在django框架内,如果将来模块能够很好地实现,为这些源提供一个直接的后端接口,我就可以很容易地与直接接口交换解决办法。

有什么想法?批评?

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

https://stackoverflow.com/questions/29758142

复制
相关文章

相似问题

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