Python 如何为Factory Boy指定数据库?
FactoryBoy似乎总是在默认数据库中创建实例。但我有以下问题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
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'
...
工作起来很有魅力。谢谢