python - 工厂男孩 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
如何避免此错误?
解决方案
推荐阅读
- web - 有没有办法恢复我已删除的 GPC 网站?
- rsocket - RSocket:RejectedResumeException(0x4):未知的恢复令牌
- python - 如何创建一个 python kivy 标签,其颜色存储在一个变量中,其他 kivy 小部件类可以访问该变量并在运行时更新
- c - C嵌入式将float转换为int
- unity3d - 对于 Unity XR 输入的 CommonUsages.trigger,TryGetFeatureValue 始终为 0
- redis - (m1 macbook) 安装redis php扩展导致架构错误,如何获得redis.so的arm64架构
- typescript - TypeScript 在设置后错误地假定属性的值
- python - 机器人不会在消息中添加表情符号
- android - Flutter线程和android UI线程,2个独立的线程?
- java - 播放下一个声音,无需等待上一个播放结束