2013-05-15 42 views
2

如何在两个不同的数据库中托管Django中的模型?使用两个数据库的单个Django应用程序

到目前为止,我在我的Django环境中建立了3个数据库。我的一个应用程序使用Router自动将数据发送到正确的数据库 - 这很容易完成,因为此应用程序只处理该数据库。

但是,我有另一个应用程序使用两个不同的数据库。该应用程序“控制”其中的一个,但从第二个获取数据,完全通过另一个应用程序更新。

我已经尝试在模型的Meta类中添加一个任意属性,以便在路由器中进行匹配,但这在Django中是不允许的(正如我发现的那样)。

什么数据可以提供可以在路由器中匹配的模型,知道要去哪个数据库?

+0

我还没有测试过这个确切的情况,但是如果你知道什么时候定义你的模型类,你想使用哪个DB,你可以为它自己设置一个任意属性,而不是它的Meta类。 –

+0

我已经尝试在常规模型中设置'db_name'属性,但并非所有模型都具有该属性(并且系统模型不能被强制拥有它)。尽管我尝试验证属性的存在,但当它达到这些时,我的路由器会窒息。在这种情况下,如何验证可能未定义的属性? –

+0

您可以使用'hasattr'来检查,或者只是尝试/除了捕获异常。 –

回答

1

如果您知道何时定义您的模型类您想使用哪个数据库,您可以向类本身添加一个任意属性而不是它的Meta类。在路由器中,可以使用hasattr来查看属性是否存在(因为它不适用于内置模型),或者只是尝试/除外并捕获异常。

相关问题