Почему именование переменных RelatedFactory в фабрике влияет на то, когда фабрики выполняются / создаются?
Когда я назвал мои переменные RelatedFactory pv_something
заводы не будут работать до post_generation
метод. Когда я переименовал переменные в param_val_something
они будут бежать до post_generation
метод.
В следующем коде RelatedFactory
не запускается до post_generation
, так self.something_set.all()
пусто, а строка t.something_else = 'abc'
никогда не выполняется.
class ThingFactory(factory.DjangoModelFactory):
class Meta:
model = Thing
name = 'a thing'
pv_something = factory.RelatedFactory(SomethingFactory, 'thing')
@factory.post_generation
def post(self, create, extracted, **kwargs):
for t in self.something_set.all():
t.something_else = 'abc'
В следующем коде единственная разница - переименование переменной pv_something
в param_val_something
, Сейчас, self.something_set.all()
не пусто, а строка t.something_else = 'abc'
выполнен.
class ThingFactory(factory.DjangoModelFactory):
class Meta:
model = Thing
name = 'a thing'
param_val_something = factory.RelatedFactory(SomethingFactory, 'thing')
@factory.post_generation
def post(self, create, extracted, **kwargs):
for t in self.something_set.all():
t.something_else = 'abc'
Я использую Python 3.4.3, Django 1.8.5 и factory-boy 2.5.2.
Полночь в пятницу вечером, это чуть не отправило меня за край...