【发布时间】:2020-10-24 16:39:07
【问题描述】:
我正在尝试使用 factory.faker 从四个公司的列表中随机选择,并将它们用作生成名称列表的流量来源。我正在使用以下代码:
from django.db import models
import factory
import factory.django
from datetime import datetime
from django.core.validators import MinValueValidator, MaxValueValidator
from faker import Faker
from faker.providers import BaseProvider
import random
fake = Faker()
class User(models.Model):
name = models.CharField(max_length=64)
address = models.CharField(max_length=128)
phone_number = models.CharField(max_length=32)
login_date = models.DateTimeField(default=datetime.now(), blank=True)
session_duration = models.IntegerField(default = 0, validators= [
MinValueValidator(0),
MaxValueValidator(5)
])
traffic_source = models.CharField(max_length=32)
class UserFactory(factory.django.DjangoModelFactory):
class Meta:
model = User
name = factory.Faker('name')
address = factory.Faker('address')
phone_number = factory.Faker('phone_number')
login_date = factory.Faker('date')
session_duration = factory.Faker('random_int')
traffic_source = random.choice(['XYZ', 'ABC', '123', '456'])
问题在于,对于所有 200 次迭代,我在 python shell 中使用以下内容:
for _ in range(200):
UserFactory.create()
我的每个名字都使用同一家公司,即所有 200 个名字都使用“XYZ”。
我错过了什么吗?我想为 200 次迭代中的每一次找到一家不同的公司。任何帮助深表感谢。谢谢!
【问题讨论】:
标签: django-rest-framework faker factory-boy