で作成されたオブジェクトを渡すために呼び出しfactory.LazyAttribute内で使用しています。これはうまくいきます。SubFactoryfactory_parent
しかし、作成したオブジェクトを に渡すと、RelatedFactoryがLazyAttribute表示されなくなりfactory_parent、失敗します。
これはうまくいきます:
class OKFactory(factory.DjangoModelFactory):
    class = Meta:
        model = Foo
        exclude = ['sub_object']
    sub_object = factory.SubFactory(SubObjectFactory)
    object = factory.SubFactory(ObjectFactory,
        sub_object=factory.LazyAttribute(lambda obj: obj.factory_parent.sub_object))
への同一の呼び出しLazyAttributeはここで失敗します:
class ProblemFactory(OKFactory):
    class = Meta:
        model = Foo
        exclude = ['sub_object', 'object']
    sub_object = factory.SubFactory(SubObjectFactory)
    object = factory.SubFactory(ObjectFactory,
        sub_object=factory.LazyAttribute(lambda obj: obj.factory_parent.sub_object))
    another_object = factory.RelatedFactory(AnotherObjectFactory, 'foo', object=object)
同一のLazyAttribute呼び出しは factory_parent を見ることができなくなり、AnotherObject値にのみアクセスできます。LazyAttribute は次のエラーをスローします。
AttributeError: The parameter sub_object is unknown. Evaluated attributes are...[then lists all attributes of AnotherObjectFactory]
これを回避する方法はありますか?
sub_object=sub_object を ObjectFactory 呼び出しに入れることはできません。
    sub_object = factory.SubFactory(SubObjectFactory)
    object = factory.SubFactory(ObjectFactory, sub_object=sub_object)
私がそうするなら:
    object2 = factory.SubFactory(ObjectFactory, sub_object=sub_object)
2 番目の sub_object が作成されますが、両方のオブジェクトが同じ sub_object を参照する必要があります。私はSelfAttribute無駄にしようとしました。