FactoryBoy, здається, завжди створює екземпляри в базі даних за замовчуванням. Але у мене є наступна проблема.
cpses = CanonPerson.objects.filter(persons__vpd=6,
persons__country="United States").using("global")
Код вказує на 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)
Відповіді:
3 для відповіді № 1Виглядає як 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")
...
0 для відповіді № 2
Тепер це безпосередньо підтримується додаванням database
атрибут на Meta
:
class CanonPersonFactory(django_factory.DjangoModelFactory):
class Meta:
model = CanonPerson
database = "global"
...