首页 > 解决方案 > 如何在 django 中使用 factoryboy 创建模型的多个实例?

问题描述

如何创建此资源的多个实例?当我尝试这样做时,我会创建相同的实例。我确实倾向于最终创建多个用户,但只有一个资源。

这是工厂声明

class ResourceFactory(DjangoModelFactory):
    class Meta:
        model = Resource

    client = factory.SubFactory(
        ClientFactory,
    )
    user = factory.SubFactory(
        UserFactory,
    )
    start_date = Faker("date_time")
    end_date = None
    department = Faker("sentence", nb_words=2)
    title = Faker("sentence", nb_words=4)
    custom_data_field = {"fake": "data"}

这大致就是我一直在尝试做的事情。我想要与同一个客户端关联的所有资源。此时,我从数据库中获取了客户端,因为我遇到了随机错误,而这似乎至少可以修复这些错误。

client = ClientFactory()
db_client = Client.objects.get(id=client.id)
resources = [ResourceFactory(client=db_client) for i in range(5)]

如果我len(Resource.objects.all())此时运行,它会以1. 如何在数据库中创建 5 个单独的资源,所有资源都与同一个客户端关联?

标签: djangounit-testingtestingfactory-boy

解决方案


推荐阅读