1

简单的问题 - 我成功地使用了多数据库和自动路由设置,如旧数据库(非托管)中记录的那样。现在我想测试它。我已经设置了一个测试运行程序来解决托管问题,并且我可以确认我正在创建数据库并且符合预期。

我的问题是数据库路由还在尝试查看非测试数据库。如何设置我的 routers.py 文件以在测试模式下查看 test_ 数据库,而在其他任何时候查看非测试数据库。

应该很简单,但我在这个墙上敲我的头..

FWIW:

class PmCatalogRouter(object):
    """A router to control all database operations on models in
    the PmCatalog application"""

    def db_for_read(self, model, **hints):
        "Point all operations on pmCatalog models to 'catalog'"
        if model._meta.app_label == 'pmCatalog':
            return 'catalog'
        return None

    def db_for_write(self, model, **hints):
        "Point all operations on pmCatalog models to 'catalog'"
        if model._meta.app_label == 'pmCatalog':
            return 'catalog'
        return None

    def allow_syncdb(self, db, model):
        "Make sure the pmCatalog app only appears on the 'catalog' db"
        if db == 'catalog':
            return model._meta.app_label == 'pmCatalog'
        elif model._meta.app_label == 'pmCatalog':
            return False
        return None

非常感谢对此的额外关注;)

谢谢

4

1 回答 1

3

好的 - 所以这就是发生的事情。事实证明它一直在完全正常工作,但是两个独立的问题导致我的测试无法通过。在这种情况下,我正在针对遗留方法测试 django 查询方法。我没有通过测试,因为遗留方法不是查看测试数据库而是查看原始数据库。我解决了这个问题,然后我意识到在测试运行程序中没有创建程序。

一旦这两个问题得到纠正,一切都神奇地结合在一起......

某人。

于 2011-07-05T18:39:33.813 回答