当我命名相关工厂变量时pv_something
,工厂要等到post_generation
方法。当我将变量重命名为param_val_something
他们将在之前运行post_generation
method.
在下面的代码中,RelatedFactory
直到之后才运行post_generation
, so 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
to param_val_something
. Now, self.something_set.all()
is not空,并且该行t.something_else = 'abc'
is被执行。
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。
星期五晚上午夜,这几乎让我崩溃了..