如何为Factory Boy指定数据库? [英] How to specify the database for Factory Boy?

查看:79
本文介绍了如何为Factory Boy指定数据库?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

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

FactoryBoy seem to always create the instances in the default database. But I have the following problem.

cpses = CanonPerson.objects.filter(persons__vpd=6,
                                   persons__country="United States").using("global")

该代码指向global数据库.我还没有找到在工厂内指定数据库的方法:

The code is pointing to the global database. I haven't found a way to specify the database within the factory:

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并未从框中提供此功能,但您可以轻松地手动添加它:

Looks like Factory Boy does not provide this feature from box, but you can easily add it manually:

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')
    ...

这篇关于如何为Factory Boy指定数据库?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆