3

我已经设置了一个数据库路由器,以使用db_for_readdb_for_write路由器方法将不同的应用程序和不同的模型定向到不同的数据库。

这很好用,除了./manage.py syncdb不尊重那些路由器设置。

当我syncdb我的模型时,它们都是在默认数据库中创建的。

数据库路由器只提供一种allow_syncdb方法,没有提供sync_to方法。有没有办法告诉syncdb命令在哪里创建新表?

注意:我无法使用该--database功能,因为有时某些模型应用程序与应用程序的其余部分会转到不同的数据库。

4

1 回答 1

10

当您编写路由器时,请确保您已经编写了 allow_syncdb() 方法。它需要一个数据库和一个模型。当您运行时,manage.py syncdb您实际上是在设置--database=default. 如果您不希望您的模型同步到默认数据库,那么您的 allow_syncdb() 方法应该在db==default and model._meta.app_label==myapp.

您需要运行带有进入该数据库的--database=your_other_db选项的syncdb。myapp但请确保在这种情况下 allow_syncdb() 仅在db==your_other_db and model._meta.app_label==myapp.

那有意义吗?基本上,您必须运行该manage.py syncdb方法两次,每个数据库一次。您不能只运行一次并让它更新两个数据库。

于 2011-09-27T20:58:47.083 回答