1

Djangoでモデルを変更し続けています。ただし、それを実行した後、データベースに移動し、テーブルを手動で削除してから、を削除する必要がありますmanage.py syncdb。試しmanage.py reset <<app_name>>ましたが、ドロップせず、新しいフィールドでモデルを再インストールします。これを行うための適切な方法は何ですか、それともデータベースにアクセスして削除してからsyncdbを実行するための最良の方法ですか?

4

1 に答える 1

2

あなたが説明する振る舞いは、ドキュメントで明示的に言及されています:

syncdbは、まだインストールされていないモデルのテーブルのみを作成します。インストール後にモデルクラスに加えられた変更に一致するALTERTABLEステートメントを発行することはありません。モデルクラスとデータベーススキーマへの変更には、多くの場合、何らかの形のあいまいさが含まれます。そのような場合、Djangoは正しい変更を推測する必要があります。その過程で重要なデータが失われるリスクがあります。

あなたが求めているのはデータベース移行のためのツールであり、それはほとんど解決された大きな問題です;-)

そうです、Marcinが言ったように、あなたはを探しています。あるいは、Nashvegasを試すこともできます。小さな変更については、sql_diffその一部である場合でもdjango-extensions実行可能なオプションです。

于 2012-02-02T22:26:43.013 に答える