【发布时间】:2020-07-21 19:14:55
【问题描述】:
我有以下型号
# in ModelA_App/models.py
class ModelA(models.Model):
TYPEA = 1
TYPEB = 2
TYPE_CHOICES = (
(TYPEA, 'TypeA'),
(TYPEB, 'TypeB')
)
type = models.PositiveSmallIntegerField(choices=TYPE_CHOICES)
name - models.CharField(max_length = 100)
#in ModelB_App/models.py
from ModelA_App.models import ModelA
class ModelB(models.Model):
label = models.TextFiled()
model_a = models.OneToOneField(ModelA, on_delete=models.CASCADE)
我有以下工厂:
#in ModelA_App/factories.py
class ModelAFactory(factory.django.DjangoModelFactory):
class Meta:
model = ModelA
name = factory.Faker('word')
type = ModelA.TYPEA
#in ModelB_App/factories.py
from ModelA_App.models import ModelA
from ModelA_App.factories import ModelAFactory
class ModelBFactory(factory.django.DjangoModelFactory):
class Meta:
model = ModelB
label = factory.Faker('text')
model_a = SubFactory(ModelAFactory, type = factory.LazyAttribute(lambda o: '%d' % o.type))
class Params:
type = ModelA.TYPEA
我希望能够使用 ModelA 和 TYPEB 创建 ModelB 对象。
试行ModelBFactory.create(type = ModelA.TYPEB)
导致错误:
factory.errors.CyclicDefinitionError:循环惰性属性定义 对于“类型”;在 ['type'] 中找到循环
此外,当我将 type 类中的 type 名称更改为例如model_type 有:
model_a = SubFactory(ModelAFactory, type = factory.LazyAttribute(lambda o: '%d' % o.model_type))
失败了
AttributeError:参数“model_type”未知。
我怎样才能实现我的目标?
【问题讨论】:
标签: django factory-boy