2014-10-24 20 views
6

FactoryBoy her zaman varsayılan veritabanında örnekleri oluşturuyor gibi görünüyor. Ama şu problemim var.Fabrika Boyu için veritabanı nasıl belirlenir?

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

kod global veritabanına işaret ediyor. Ben fabrika içinde veritabanını belirtmek için bir yol bulmuş değil: kutusundan bu özelliği sağlamaz

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) 

cevap

3

Factory Boy benziyor, ancak kolayca manuel olarak ekleyebilirsiniz:

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

Çalışır: artık doğrudan Meta üzerinde database özellik ekleyerek destekledi. Teşekkürler – Houman

0

budur Büyü gibi

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

    ... 
İlgili konular