Factory_boy无法创建不同的用户对象Djang

2024-03-29 05:29:04 发布

您现在位置:Python中文网/ 问答频道 /正文

我是新来的工厂男孩与Django。花了一段时间之后,我了解了如何为用户模型创建工厂。在

我使用默认的用户模型,下面是我的工厂。我用的是假的随机性

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中

我使用用户工厂.create()用板条箱封住用户。这个很好用。有没有可能循环使用create语句并装箱5个不同的用户?现在,当我这样做时,我只得到一个用户(装箱一次,得到4次)如下。我错过了什么?enter image description here


Tags: django用户namefrom模型importmodelsfactory
1条回答
网友
1楼 · 发布于 2024-03-29 05:29:04

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

相关问题 更多 >