私のdjangoプロジェクトで2番目のデータベースとして使用したいレガシーデータベースがあります。データベースを設定ファイルに追加して、次を実行しました。
python manage.py inspectdb --database=images
スクリプトは 1 秒もかからずに終了し、その結果は驚くべきものでした。それは私のすべてのテーブルを理解しました-または最初はそう思いました。実行しようとしたとき:
python manage.py migrate --database=images
次のようなエラーが発生しました。
'unique_together' refers to the non-existent field 'commentaryId'.
エラーが発生したすべてのテーブルは、2 つの id フィールドを含む多対多のリンク テーブルであり、それらが一緒になって主キーを形成していました (したがって、一緒に「一意」である必要がありました)。
これは、このエラーを発生させた、inspectdb によって作成されたモデルの 1 つです。
class Pagescanannotationscommentaries(models.Model):
pagescanannotationid = models.IntegerField(db_column='pageScanAnnotationId') # Field name made lowercase.
commentaryid = models.IntegerField(db_column='commentaryId') # Field name made lowercase.
class Meta:
managed = False
db_table = 'PageScanAnnotationsCommentaries'
unique_together = (('pageScanAnnotationId', 'commentaryId'),)
スタックオーバーフローで私のような質問をいくつか見つけましたが、提案は役に立たなかったか、明らかに関係がありませんでした。しかし、それを修正するヒントを提供してくれたGoogleグループの投稿を見つけました: https://groups.google.com/forum/#!topic/django-users/_phTiifN3K0
しかし、それでも、私の問題は少し異なっていたことがわかりました。以下の回答で説明します。