3

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 を使用しています。

金曜日の夜の真夜中、これは私をほとんど限界に追いやった..

4

0 に答える 0