7

Django でアクセスしようとしている既存のデータベースがあります。以前python manage.py inspectdbはデータベースのモデルを作成していました。現在、モデルを python シェルにインポートすることはできますが、何らかの方法で実際のオブジェクトにアクセスしようとすると、このエラーが発生しますOperationalError: (1054, "Unknown column 'some_table.id' in 'field list'")実際、データベース内のテーブルにはidフィールドがありません。どうすればこれを修正できますか? このフィールドを自動的に作成できるように、 Metaクラスのマネージドフィールドを更新して移行を実行する必要がありますか?

4

1 に答える 1

7

Django のドキュメントから: この機能は、決定的なモデル生成ではなく、ショートカットとして意図されています。詳細については、inspectdb のドキュメントを参照してください。(参考:https ://docs.djangoproject.com/en/1.8/howto/legacy-databases/ )

モデルを手動でクリーンアップして移行する必要があります。「id」フィールドを追加するために追加する必要がある行は次のとおりです。

id = models.IntegerField(primary_key=True)

警告: 私は間違いなく、元のデータベースではなく、おもちゃとしてデータベースのコピーを作成します。これを正しく行うには、試行錯誤が必要になる可能性があります。正しいことを完全に確認したら、変更できますがManaged=True非常に注意してください。

于 2015-06-02T00:02:16.280 に答える