- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
在 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 docs但没有看到允许我延迟访问该属性的类或函数。有人有什么建议吗?
最佳答案
从 factoryboy 2.4.0 开始你可以使用 exclude .这使您可以向工厂添加一个不会传递到模型类的参数
import factory
class MyModelFactory(factory.DjangoModelFactory):
created_by = factory.SubFactory(AdminUserFactory)
created_by_id = factory.LazyAttribute(lambda o: o.created_by.id)
class Meta:
model = MyModel
exclude = ['created_by']
我已将 OP 示例改为使用 created_by_id
,但您可以重命名它以使其对您有意义。
关于python - FactoryBoy 将属性分配给 SubFactory 的属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17978593/
在 FactoryBoy 中定义一个 ModelFactory 时,我需要访问由 SubFactory 创建的另一个模型的属性并将其分配给这个 ModelFactory 的属性。 这就是我想要做的:
假设我有: class CompanyFactory(DjangoModelFactory): class Meta: model = Company name = f
我将 Flask 和 SQLAlchemy(通过 Flask-SQLAlchemy 扩展)与 Factory_Boy 一起使用. 我的 GearItem 模型有一个指向 GearCategory 的外
我刚开始使用factory boy与 Django 。它有一个设置 FACTORY_DJANGO_GET_OR_CREATE这意味着如果已经存在一个新对象,它将不会创建一个新对象。但是当我要求一个现有
我在 SubFactory 调用中使用 factory.LazyAttribute 来传递在 factory_parent 中创建的对象。这很好用。 但如果我将创建的对象传递给 RelatedFact
我是一名优秀的程序员,十分优秀!