Нарушение ограничения внешнего ключа с помощью 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".

0 ответов

Другие вопросы по тегам