у меня есть следующие модели
# 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
Я хотел бы иметь возможность создать объект ModelB
с ModelA
, имеющим TYPEB
. Попытка строки ModelBFactory.create(type = ModelA.TYPEB)
приводит к ошибке:
factory.errors.CyclicDefinitionError: циклическое ленивое определение атрибута для 'type'; цикл найден в ['type']
Кроме того, когда я меняю имя type
в классе Params
, например, на model_type
имеющий:
model_a = SubFactory(ModelAFactory, type = factory.LazyAttribute(lambda o: '%d' % o.model_type))
Это терпит неудачу с
AttributeError: параметр model_type неизвестен.
Как я могу достичь своей цели?