在 FactoryBoy 中定义 ModelFactory 时,我需要访问由 SubFactory 创建的另一个模型的属性并将其分配给此 ModelFactory 的属性。
这就是我想要做的:
import factory
class MyModelFactory(factory.DjangoModelFactory):
FACTORY_FOR = MyModel
created_by = factory.SubFactory(AdminUserFactory)**.id**
显然这不起作用,因为没有 AdminUser 对象可以访问 MyModelFactory 类定义中的 id。
这就是我所做的,但它很丑:
import factory
class MyModelFactory(factory.DjangoModelFactory):
FACTORY_FOR = MyModel
dummy_created_by = factory.SubFactory(AdminUserFactory)
created_by = factory.LazyAttribute(lambda o: o.dummy_created_by.id)
@classmethod
def _create(cls, target_class, *args, **kwargs):
del kwargs['dummy_created_by']
return super(MyModelFactory, cls)._created(
target_class, *args, **kwargs)
我试图通读Factory_Boy 文档,但没有看到允许我懒惰地访问该属性的类或函数。有没有人有什么建议?