Нарушение ограничения внешнего ключа с помощью RelatedFactory в модульных тестах django
У меня есть модель OneToOne, которую я использую вместе с Factory в модульных тестах. Когда тесты выполняются, я получаю нарушение ограничения внешнего ключа:IntegrityError: вставка или обновление таблицы "core_designfeatures" нарушает ограничение внешнего ключа
Это не было проблемой в Django 1.9, но мне нужно перейти на 1.10 по другим причинам.
Есть ли способ, которым я могу сделать эту работу? Я включил соответствующие фрагменты ниже:
Django==1.10.5
factory-boy==2.8.1
Faker==0.7.7
Выдержка из модели:
class DesignFeatures(BaseModel):
"""List of board features"""
design = models.OneToOneField(
Design,
on_delete=models.CASCADE,
related_name='features',
)
Фабрика выдержки:
class DesignFeaturesFactory(factory.django.DjangoModelFactory):
class Meta(object):
model = models.DesignFeatures
class DesignFactory(factory.django.DjangoModelFactory):
class Meta(object):
model = models.Design
features = factory.RelatedFactory(DesignFeaturesFactory, 'design')
Исключение при выполнении теста:
vi +216 /usr/local/lib/python2.7/site-packages/django/test/testcases.py # __call__
self._post_teardown()
vi +908 /usr/local/lib/python2.7/site-packages/django/test/testcases.py # _post_teardown
self._fixture_teardown()
vi +1064 /usr/local/lib/python2.7/site-packages/django/test/testcases.py # _fixture_teardown
connections[db_name].check_constraints()
vi +224 /usr/local/lib/python2.7/site-packages/django/db/backends/postgresql/base.py # check_constraints
self.cursor().execute('SET CONSTRAINTS ALL IMMEDIATE')
vi +112 /usr/local/lib/python2.7/site-packages/raven/contrib/django/client.py # execute
return real_execute(self, sql, params)
vi +64 /usr/local/lib/python2.7/site-packages/django/db/backends/utils.py # execute
return self.cursor.execute(sql, params)
vi +94 /usr/local/lib/python2.7/site-packages/django/db/utils.py # __exit__
six.reraise(dj_exc_type, dj_exc_value, traceback)
vi +62 /usr/local/lib/python2.7/site-packages/django/db/backends/utils.py # execute
return self.cursor.execute(sql)
IntegrityError: insert or update on table "core_designfeatures" violates foreign key constraint "core_designfeatures_design_id_3cf84d33_fk_core_design_id"
DETAIL: Key (design_id)=(26) is not present in table "core_design".