3

django-synchro を django 2.2 にアップグレードしようとしています。プロジェクトを django 2.1 にアップグレード済みですが、ContentType オブジェクトに問題があります。

django 2.1 にアップグレードされたバージョンは、ここにあります。

(python runtests.py が動作し、すべてのテストがパスします)

django 2.2.3でエラーが発生しました

django.db.utils.OperationalError: そのようなテーブルはありません: django_content_type

初期化時に、移行はデフォルトのデータベースで行われ、残りはテスト データベース (メモリ内) で行われるようです。そのため、ContentType は残りのコードでは見られません。models.py読み込み 時にエラー発生(content_type = models.ForeignKey(ContentType, on_delete=models.CASCADE))

どんなアイデアでも大歓迎です...

Django 2.2 のリリース ノートを見てきました

2.2 には後方互換性のない 2 つの変更があり、エラーが発生する可能性があります。

TransactionTestCase のシリアル化されたデータの読み込み: 最初のデータ移行は、データベースのフラッシュ後に、テストの最後に TransactionTestCase に読み込まれるようになりました。古いバージョンでは、このデータはテストの開始時にロードされていましたが、これにより test --keepdb オプションが正しく機能しません (テスト スイート全体の最後でデータベースは空でした)。TransactionTestCase の内部をカスタマイズしていない限り、この変更がテストに影響を与えることはありません。

Test : SQLite 3.20+ の各 TestCase テストの最後に、延期可能なデータベース制約がチェックされるようになりました。これは、延期可能な制約をサポートする他のバックエンドと同様です。これらのチェックは、高価なテーブル イントロスペクションが必要になるため、古いバージョンの SQLite には実装されていません。

4

1 に答える 1