/ / फैक्ट्री बॉय के लिए डेटाबेस कैसे निर्दिष्ट करें? - अजगर, डीजेंगो, फैक्टरी-बॉय

फ़ैक्टरी बॉय के लिए डेटाबेस कैसे निर्दिष्ट करें? - अजगर, डीजेंगो, फैक्ट्री-बॉय

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"

...