如何让FactoryBoy的ImageField在调用save()前生成图片?
主题。
现在(Factory Boy 版本 2.4.1),使用以下代码:
class ImageFactory(factory.django.DjangoModelFactory):
class Meta:
model = Image
image = factory.django.ImageField(width=1024, height=768)
在保存的时候,image
的值会是 None
,所以如果 Image
模型的 save
方法被重写,并且它在处理 image
时会出错,那就会失败。这正是我遇到的问题。
那么,如何在调用 save
之前生成 image
呢?
1 个回答
25
我找到了一种解决办法:
from django.core.files.base import ContentFile
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'
)
)