13

django-pagetreeライブラリに Django 2.0 サポートを追加する作業を行っています。sqlite インメモリ データベースを使用した自動テスト中に、次のような一連のエラーが発生します。

  File "/home/nnyby/src/django-pagetree/pagetree/tests/test_models.py", line 638, in setUp
    'children': [],
  File "/home/nnyby/src/django-pagetree/pagetree/models.py", line 586, in add_child_section_from_dict

...

  File "/home/nnyby/src/django-pagetree/venv/lib/python3.5/site-packages/django/db/backends/base/base.py", line 239, in _commit
    return self.connection.commit()
django.db.utils.IntegrityError: FOREIGN KEY constraint failed

これは Django 2.0 リリース ノートに記載されています: https://docs.djangoproject.com/en/2.0/releases/2.0/#foreign-key-constraints-are-now-enabled-on-sqlite

私が完全に理解していないその説明から、これは永続的ではないテストデータベースには適用されませんよね? Django 2.0 を使用している場合、適切なオプションで sqlite テスト データベースが作成されませんか?

テストに使用しているアプリの設定は次のとおりです: https://github.com/ccnmtl/django-pagetree/blob/master/runtests.py

4

8 に答える 8

4

同じエラーで少し異なる状況に遭遇しました。問題は、同じモデル名とフィールド名を使用することでした

間違ったコード

class Column(models.Model):
    ...

class ColumnToDepartment(models.Model):
    column = models.ForeignKey(Column, on_delete=models.CASCADE)

ソリューション

class Column(models.Model):
    ...

class ColumnToDepartment(models.Model):
    referring_column = models.ForeignKey(Column, on_delete=models.CASCADE)
于 2019-05-29T13:59:47.600 に答える