为什么在工厂执行/实例化工厂时,factory-boy中的RelatedFactory变量的命名会受到影响?

时间:2015-10-30 20:49:50

标签: python django naming factory-boy

当我命名我的RelatedFactory变量pv_something时,工厂才会在post_generation方法之后运行。当我将变量重命名为param_val_something时,它们将在post_generation方法之前运行。

在以下代码中,RelatedFactorypost_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和工厂男孩2.5.2。

周五晚上的午夜,这几乎让我超越了边缘。

0 个答案:

没有答案