我知道,这是个有点奇怪的问题,但请原谅我。我们已经为我们的一个RESTful应用程序开发了一个使用Python的iPhone平台。webapp版本是使用Django构建的,它也使用了这个API。我们认为使用Django内置的控制面板功能来帮助管理数据是个好主意。
这本身并不是问题所在。问题是,每个人都认为管理中心最好是一个位于RESTful平台之上的客户端。
所以,我的问题是,是否有一种方法可以操纵Django的模型层来直接访问我们的API,而不是直接与数据库通信呢?模型层作为客户端向管理中心传递请求和响应。
我确信这是可能的,但我不太确定我会从哪里开始。有意见吗?
发布于 2016-07-15 20:42:46
我记得我曾经想过要做这样的事。当时,我使用自定义QuerySet创建了一个自定义管理器。我超越了一些方法,如_filter_or_exclude(),count(),exists(),select_related(),.增加了一些属性。花了不到一周的时间,就成了一团一团糟,可能有一天没有机会工作了。于是我立即停止了一切,找到了一个更合适的解决方案。
如果我要再做一次,我会花很长时间考虑其他选择。如果这听起来确实是最好的做法,我可能会创建一个自定义数据库后端。这个后端不是将Django ORM查询转换为SQL查询,而是将它们转换为HTTP请求。
要做到这一点,我认为最好的起点是熟悉django数据库后端源代码。
在开始这样的发展之前,我也认为有一些重要的事情需要考虑:
ORDER BY子句可能会安全地忽略。尽管GROUP BY条款不太可能被安全驳回。COUNT()操作,您可以通过获取整个数据并使用len()在python中对其进行计数,但这是否合理?根据用例,可能还有很多其他需要考虑的事项,例如:
https://stackoverflow.com/questions/9013099
复制相似问题