Python 如何为Factory Boy指定数据库?

Python 如何为Factory Boy指定数据库?,python,django,factory-boy,Python,Django,Factory Boy,FactoryBoy似乎总是在默认数据库中创建实例。但我有以下问题 cpses = CanonPerson.objects.filter(persons__vpd=6, persons__country="United States").using("global") 代码指向全局数据库。我没有找到在工厂中指定数据库的方法: class CanonPersonFactory(django_factory.DjangoMode

FactoryBoy似乎总是在默认数据库中创建实例。但我有以下问题

cpses = CanonPerson.objects.filter(persons__vpd=6,
                                   persons__country="United States").using("global")
代码指向
全局
数据库。我没有找到在工厂中指定数据库的方法:

class CanonPersonFactory(django_factory.DjangoModelFactory):
    class Meta:
        model = CanonPerson
        django_get_or_create = ('name_first', 'p_id')
    p_id = 1
    name_first = factory.Sequence(lambda n: "name_first #%s" % n)

    @factory.post_generation
    def persons(self, create, extracted, **kwargs):
        if not create:
            # Simple build, do nothing.
            return

        if extracted:
            # A list of groups were passed in, use them
            for person in extracted:
                self.persons.add(person)

看起来,
Factory Boy
没有从框中提供此功能,但您可以轻松手动添加它:

class CanonPersonFactory(django_factory.DjangoModelFactory):
    class Meta:
        model = CanonPerson
    ...
    @classmethod
    def _get_manager(cls, model_class):
        manager = super(CanonPersonFactory, cls)._get_manager(model_class)
        return manager.using('global')
    ...

现在可以通过在
Meta
上添加
数据库
属性来直接支持这一点:

class CanonPersonFactory(django_factory.DjangoModelFactory):
    class Meta:
        model = CanonPerson
        database = 'global'

    ...

工作起来很有魅力。谢谢