如何让FactoryBoy的ImageField在调用save()之前生成图像?

Gil*_*tes 5 python django factory-boy

SUBJ.

现在(Factory Boy ver.2.4.1.)使用以下代码:

class ImageFactory(factory.django.DjangoModelFactory):
    class Meta:
        model = Image

    image = factory.django.ImageField(width=1024, height=768)
Run Code Online (Sandbox Code Playgroud)

imageNone在节省时间,因此如果Image模型已save被覆盖并且其运行时image,它将失败.这就是我的情况.

那么 - 如何在save调用之前生成图像?

Gil*_*tes 11

我找到了一个解决方法:

class ImageFactory(factory.django.DjangoModelFactory):
    class Meta:
        model = Image

    image = factory.LazyAttribute(
            lambda _: ContentFile(
                factory.django.ImageField()._make_data(
                    {'width': 1024, 'height': 768}
                ), 'example.jpg'
            )
        )
Run Code Online (Sandbox Code Playgroud)