首页 > 解决方案 > Django Factory Boy 和 Faker 总是返回相同的值

问题描述

我正在尝试生成虚拟数据,并且我在几个选项中有一个可选字段,但始终生成相同的扇区

模型.py:

SECTOR = (("1", _("Administración y gestión")), ("2", _("Agricultura y ganadería")), ("3", _("Industria alimentaria")), ("4", _("Grandes almacenes")), ("5", _("Comercio")), ("6", _("Construcción e industrias extractivas")), ("7", _("Actividades físico-deportivas")))

class Company(TimeEntity):
  ...
  sector = models.CharField(verbose_name=_("Sector"), max_length=20, choices=SECTOR, default=1)

工厂.py:

SECTOR_FACTORY = list(map(lambda x: x[0], app_models.SECTOR))

class CompanyFactory(DjangoModelFactory):

  class Meta:
    model = app_models.Company

  sector = fake.random_choices(elements=SECTOR_FACTORY, length=1)

标签: djangofakerfactory-boy

解决方案


用正确的代码更新

from factory.fuzzy import FuzzyChoice

SECTOR_FACTORY = list(map(lambda x: x[0], app_models.SECTOR))

class CompanyFactory(DjangoModelFactory):

  class Meta:
    model = app_models.Company

  sector = FuzzyChoice(SECTOR_FACTORY)

推荐阅读