Djangoでモデルを変更し続けています。ただし、それを実行した後、データベースに移動し、テーブルを手動で削除してから、を削除する必要がありますmanage.py syncdb
。試しmanage.py reset <<app_name>>
ましたが、ドロップせず、新しいフィールドでモデルを再インストールします。これを行うための適切な方法は何ですか、それともデータベースにアクセスして削除してからsyncdbを実行するための最良の方法ですか?
1 に答える
2
あなたが説明する振る舞いは、ドキュメントで明示的に言及されています:
syncdbは、まだインストールされていないモデルのテーブルのみを作成します。インストール後にモデルクラスに加えられた変更に一致するALTERTABLEステートメントを発行することはありません。モデルクラスとデータベーススキーマへの変更には、多くの場合、何らかの形のあいまいさが含まれます。そのような場合、Djangoは正しい変更を推測する必要があります。その過程で重要なデータが失われるリスクがあります。
あなたが求めているのはデータベース移行のためのツールであり、それはほとんど解決された大きな問題です;-)
そうです、Marcinが言ったように、あなたは南を探しています。あるいは、Nashvegasを試すこともできます。小さな変更については、sql_diff
その一部である場合でもdjango-extensions
実行可能なオプションです。
于 2012-02-02T22:26:43.013 に答える