Мои модели следующие:
class Question(models.Model):
content = models.CharField(
max_length=1000,
blank=False,
default='',
)
def __str__(self):
return self.content
class OptionGroup(models.Model):
question = models.ForeignKey(
'Question',
on_delete=models.CASCADE,
default='',
)
options = models.ManyToManyField('Option')
class Option(models.Model):
content = models.CharField(
max_length=1000,
blank=False,
default='',
)
Мои заводы таковы:
class QuestionFactory(factory.django.DjangoModelFactory):
class Meta:
model = Question
content = factory.Sequence(lambda n: 'Question %d' % n)
class OptionGroupFactory(factory.django.DjangoModelFactory):
class Meta:
model = OptionGroup
question = factory.SubFactory(QuestionFactory)
@factory.post_generation
def options(self, create, extracted, **kwargs):
if not create:
return
if extracted:
for option in extracted:
self.options.add(option)
class OptionFactory(factory.django.DjangoModelFactory):
class Meta:
model = Option
content = factory.Sequence(lambda n: 'Option %d' % n)
Теперь для простоты использования я хотел создать класс фабрики вопросов, который создает два объекта OptionGroup, каждый из которых имеет два объекта Option. Для этого я использую эту фабрику, но она не работает:
class QWith2OptGrps4Options(QuestionFactory):
option_group1 = factory.RelatedFactory(
OptionGroupFactory,
'question',
options=(OptionFactory.create(), OptionFactory.create())
)
option_group2 = factory.RelatedFactory(
OptionGroupFactory,
'question',
options=(OptionFactory.create(), OptionFactory.create())
)
Я полагаю, что это связано с тем, как я объявляю OptionFactory, но я не знаю, как это сделать правильно. Любая помощь?