summaryrefslogtreecommitdiff
path: root/factory
diff options
context:
space:
mode:
authorRaphaël Barrois <raphael.barrois@polytechnique.org>2015-03-26 22:53:15 +0100
committerRaphaël Barrois <raphael.barrois@polytechnique.org>2015-03-26 22:53:15 +0100
commit636ca46951d710a4b9d9fd61ec1da02294806d3d (patch)
tree23b5bd7bfd7938cccd39d72e829562ca6c515137 /factory
parent72fd943513b0e516f06c53b13ff35ca814b0a4a0 (diff)
downloadfactory-boy-636ca46951d710a4b9d9fd61ec1da02294806d3d.tar
factory-boy-636ca46951d710a4b9d9fd61ec1da02294806d3d.tar.gz
Add support for multidb with Django (Closes #171).
The ``factory.django.DjangoModelFactory`` now takes an extra option: ``` class MyFactory(factory.django.DjangoModelFactory): class Meta: model = models.MyModel database = 'replica' ``` This will create all instances of ``models.Model`` in the ``'replica'`` database.
Diffstat (limited to 'factory')
-rw-r--r--factory/django.py8
1 files changed, 6 insertions, 2 deletions
diff --git a/factory/django.py b/factory/django.py
index e823ee9..ee5749a 100644
--- a/factory/django.py
+++ b/factory/django.py
@@ -56,6 +56,7 @@ class DjangoOptions(base.FactoryOptions):
def _build_default_options(self):
return super(DjangoOptions, self)._build_default_options() + [
base.OptionDefault('django_get_or_create', (), inherit=True),
+ base.OptionDefault('database', 'default', inherit=True),
]
def _get_counter_reference(self):
@@ -100,9 +101,12 @@ class DjangoModelFactory(base.Factory):
raise base.AssociatedClassError("No model set on %s.%s.Meta"
% (cls.__module__, cls.__name__))
try:
- return model_class._default_manager # pylint: disable=W0212
+ manager = model_class._default_manager # pylint: disable=W0212
except AttributeError:
- return model_class.objects
+ manager = model_class.objects
+
+ manager = manager.using(cls._meta.database)
+ return manager
@classmethod
def _get_or_create(cls, model_class, *args, **kwargs):