1

私がこのモデルを持っているとしましょう:

class FooContainerModel(object):
    def __init__(self, foos):
        self.foos = foos

作成時に作成される foo の数を決定できるようにしたいです。

model = FooContainerFactory(count=15)

次のような工場を試しました

class FooContainerFactory(factory.Factory):
    class Meta:
        model = FooContainerModel

    foos = factory.List([Foo() for _ in xrange(20)]) # fixed amount
    foos = factory.lazy_attribute(lambda o: [Foo() for _ in xrange(20)]) # same

もちろん、必要な長さの Foo() のリストを手動で作成し、FooContainerModel をインスタンス化することもできますが、それは私が望むものではありません。解決策はありますか?

4

2 に答える 2

3

FactoryBoy がどのように機能するかはわかりませんが、Django モデルのフィールドに動的プロパティが必要な場合、この戦略は通常うまくいきます。

def FooContainerFactory(factory.Factory):

    def __init__(self, count=20, *args, **kwargs):
        self.foos = factory.List([Foo() for _ in range(20)])
        super(FooContainerFactory, self).__init__(*args, **kwargs)

    class Meta:
        model = FooContainerModel
于 2015-07-31T23:36:12.103 に答える