RelatedFactory 変数に名前を付けたときpv_something
、ファクトリはメソッドの後まで実行されませんでしたpost_generation
。変数の名前を に変更すると、メソッドparam_val_something
の前に実行されます。post_generation
次のコードでRelatedFactory
は、 は after まで実行されない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 を使用しています。
金曜日の夜の真夜中、これは私をほとんど限界に追いやった..