1


0

なぜDjangoは自動テーブル更新を「本当に」サポートしていないのですか?

最近、私はDjangoでWeb開発を学ぼうとしています、そして、私はそれについてとても幸せです…​

しかし、1つ重要なのは、本当に迷惑なことです。特に、djangoの背後にある「単純さ」の哲学についての考えを得るときです。

それは私がちょうど経験したようにdjangoでテーブルを更新することは本当に簡単さからかけ離れているということです。

たとえば、私が実際に持っていたのとまったく同じように、最初は応募タイトルにスラッグフィールドを追加するのをスキップしました。 しかし、しばらくして、私はテーブルにスラッグ列を追加したかったです-djangoのルーキーである誰もが期待するように、私は `+ python manage.py syncdb +`コマンドを試しました。 そしてもちろんうまくいきませんでした… 少し検索したところ、「dbshel​​lコマンドラインに「手動で」新しい列を追加する必要がある」とわかりました(使用しているデータベースはmysqlです)。

理由はわかりませんが、djangoでWebサイトを簡単に作成する方法を見た後では、これは予想できない非常に面白いことです。 みなさん、そう思いませんか。 または、他に解決策がある場合、または今後の予定がある場合は、共有してください。

前もって感謝します…​

PS. 私はシェルでdbと仲良くしても構いませんが、知りたいのはそれがdjangoのような理由なのです…​

5 Answer


6


データベースの移行はdjangoプロジェクトの目標ですが、最初のいくつかのバージョンでは終わらないということは十分に難しいトピックでした。 ギャップを埋めるために多数の移行プロジェクトが出現し、それぞれが困難な問題をさまざまな方法で解決します。 追加の移行ソリューションを作成しようとしたり、成熟する前に「正式な」ステータスのものを祝福したり、少なくとも1つの推奨ソリューションとして浮上したりするのではなく、djangoチームはそれらのソリューションを進化させる後日djangoに同梱される予定です。

これらのサードパーティの移行ツールについて詳しくは、https://stackoverflow.com/questions/426378/what-is-your-favorite-solution-for-managing-database-migrations-in-django []への回答をご覧ください。この質問。]


3


私は Southを使ってこのような問題を防ぐことができます(ただし、フィールドの名前変更には問題があるようです)。

私はこの振る舞いはDjangoがサポートしているDBバックエンドの違いと これらのリリースノートDjango 1.1RCに変更はありません


1


上記の回答のいくつかは良い情報を持っています。 ただし、質問によると、質問者はmanage.pyのresetコマンドを使用していない可能性があります。 モデルやデータを構築するときに、開発プロセス中に、おそらく永続化する必要のあるデータがありません。 シードデータはinitial_data(http://docs.djangoproject.com/en/dev/howto/initial-data /)として保存でき、データベースをリセットおよび同期するときに自動的または手動で追加できます。

開発中は、ロード可能なさまざまなデータセットを管理し、manage.pyでresetコマンドを自由に使用することが、進化するモデルを扱うための鍵となります。 ただし、運用に入ると、移行ツール(または手動によるDBの調整)が不可欠になります。


1


http://south.aeracode.org/[South]は実際にDjangoの移行をうまく処理します。  http://south.aeracode.org/[Webサイト]で簡単に見つけられる優れた文書があります。


0


最小限の労力でデータベースをすばやく簡単に作成できるように、彼らはそれを作りました。 残念ながら、それらはテーブルを更新するのをそれほど簡単にはしませんでした、あなたは手動でALTER TABLEをしなければならないでしょう。 私は彼らがDjango 1.1のためにこれを修正しようとしているのではないかと考えていますが、私は完全にそれについて確信がありません。