python - Factory_boy 不创建不同的用户对象 Django

标签 python django factory-boy

我是 Django 的 Factory_boy 新手。花了一些时间后,我了解了如何为用户模型创建工厂。

我使用的是默认用户模型,以下是我的工厂。我正在使用 Faker 来实现随机性

import factory
from . import models
from django.contrib.auth.models import User
from faker import Faker
from django.contrib.auth.hashers import make_password

fake = Faker()

class UserFactory(factory.DjangoModelFactory):
    class Meta:
        model = User
        django_get_or_create = ('email',)

    first_name = fake.first_name()
    last_name = fake.last_name()
    email = first_name+"."+last_name+"@gmail.com"
    password = make_password("ojasojas")
    username = first_name+"_"+last_name

现在在 django shell 中

我使用 UserFactory.create() 来创建一个用户。这很好用。是否可以循环创建语句并创建 5 个不同的用户?现在,当我这样做时,我只获得了一个用户(装箱一次并“获得”4 次),如下所示。我错过了什么? enter image description here

最佳答案

您正在为您的工厂定义类属性,只有在定义类时才会评估这些属性。 email = first_name+"."+last_name+"@gmail.com" 将被评估一次,而不是每次调用 UserFactory.create() 时,因此唯一约束错误。通常的解决方案是通过 __init__() 定义实例属性,但 FactoryBoy 对此有自己的解决方案:lazy attributes .

关于python - Factory_boy 不创建不同的用户对象 Django,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42709008/

相关文章:

python - factory_boy 提取原始 kwargs

python - 在 ubuntu 中安装后无法运行 jupyter 笔记本

python - 计算 3D 点云的 EMD 非常慢

python - django 中的可编辑数据表,由 mongodb 支持

django - 从 1.11 迁移到 Django 2.2——外键中没有 on_delete 的旧迁移破坏了一切

python - 工厂男孩 - 如何创建工厂所需的数据(预生成 Hook )

python - 如何让pandas.Series.str.get_dummies() 报NaN?

python - 如何在 mod_python 中访问查询参数 ("$_GET")?

python - 并行化 django 任务函数的最佳方法

django - 工厂男孩 : passing model instances for a RelatedFactory