首页 > 解决方案 > 工厂男孩 RecursionError:超出最大递归深度

问题描述

我有 2 个模型,django User 模型和 Employee

class Employee(TimeStampedModel):

  creator = models.ForeignKey(User, on_delete=models.CASCADE, related_name="employees")
  first_name = models.CharField(max_length=255, blank=True)
  last_name = models.CharField(max_length=255, blank=True)
  phone = models.CharField(validators=[phone_regex], max_length=17, blank=True)
  email = models.EmailField(validators=[email_regex], max_length=255, blank=True)
  user = models.OneToOneField(User, on_delete=models.SET_NULL, null=True, related_name="employee")

2家工厂:

class UserFactory(factory.django.DjangoModelFactory):
  class Meta:
      model = User

  employee = factory.RelatedFactory(
      "control_room.tests.factories.EmployeeFactory",
      factory_related_name='user'
  )
  first_name = fake.first_name()
  last_name = fake.last_name()
  username = factory.Sequence(lambda n: "user_%d" % n)
  email = fake.ascii_email()

class EmployeeFactory(factory.django.DjangoModelFactory):
  class Meta:
      model = Employee

  creator = factory.SubFactory(UserFactory)
  first_name = fake.first_name()
  last_name = fake.last_name()
  phone = "+88005553535"
  email = fake.ascii_email()
  user = factory.SubFactory(UserFactory)

所以 Employee 模型与 User 模型有 2 个关系(ForeignKey - 创建者和 OneToOneField - 用户)

当我创建工厂男孩模型时,我得到: RecursionError: maximum recursion depth exceeded

如何避免此错误?

标签: pythondjangofactory-boy

解决方案


推荐阅读