我下面的问题早在2013年就有人回答了。但我正在寻找更强大和最新的解决方案,如果有的话。在
我有一个Django应用程序app1
,我想把Django中每天不断更新的其他数据库中的数据绑定起来。例如:在app1
中,我有一个模型model
,其中用户必须输入来自sap的销售订单和来自salesforce的相应机会编号。我有一些工具可以将数据从sap转储到sapdb
中,并将salesforce转储到salesforcedb
。在
我在app1
中的模型看起来像:
class SalesOrderMapping(models.Model):
sales_order = models.CharField("Sales Order #", max_length=10, primary_key=True)
opportunity_number = models.CharField("Opportunity Number", max_length=30)
class Meta:
verbose_name_plural = "Sales Order / Opportunity Mapping"
ordering = ('sales_order', 'opportunity_number')
def __str__(self):
return self.sales_order
如您所见,在上面的模型中,我有机会编号,我希望用户输入sales_order
,而不是输入opportunity_number
,它可以是自动完成文本框(理想情况下)或由salesforcedb
中的表填充的下拉列表。到目前为止,我已经能够描述设置.py. 有人能给我指出正确的方向吗?在
首先,你需要一个数据库路由器为你的应用程序,我会尝试做一些类似的事情,你需要什么样的信息给定
附录1/路由器.py
在你的设置.py文件添加以下内容
^{pr2}$您可以使用inspectdb命令创建现有数据库的模型,例如:
我希望有帮助
来源:个人经验和Django文档https://docs.djangoproject.com/en/1.10/topics/db/multi-db/
其他答案已经提到了这个问题的多数据库特性,并链接到文档。在
您可能希望使用类似Django REST框架的东西来运行对其他表的访问,作为应用程序其余部分的一个迷你服务,而不是在视图代码中尝试上下文切换DB调用。在
例如,如果您需要在
SAP
或SalesForce
表中查找数据,您可以使用该ID向后端服务发出Ajax请求,它将向您发送一个JSON答案,其中包含您需要的任何内容。在这样,您就可以抽象关系并在将来更改实现细节,而不必重写大量代码。在
Django支持多个数据库,如下所述:
https://docs.djangoproject.com/en/1.10/topics/db/multi-db/
假设将主数据库设置为主数据库,则必须确保在从其他数据库读取数据时指定要访问的数据库。在
相关问题 更多 >
编程相关推荐