2017-01-10 1 views
0

を使用して新しいテーブルを作成する方法このダンゴインストールでは、多数の移行スクリプトがあります。彼らはとても似て:モデル

00001_initial.py 
00002_blah_blah.py 
00003_bleh_bleh.py 

は今、私はこれらがmodels.pyで定義されたものを取って、DBへの「作成」テーブルとかに対してそれらを実行する「データベース構築」スクリプトを知っています。

私は新しいテーブルを作成したいので(私はmodels.pyの定義を作成しました)。このために、私は別のモデルクラスをコピーし、その名前とフィールドを編集しました。この新しいモデルクラス 'ブーム'を呼び出すことができます。

私の質問は、マイグレーションスクリプトとブームモデルを使ってこのブームテーブルを "作成"する方法です。

DBに既に入っているものが誤って混乱する可能性があると心配です。ブームテーブルのみを作成するには、どのように移行を実行しますか?どのようにして移行スクリプトを作成すればよいですか?

私はそれがmanage.pymigrateを実行しているかrunmigrationとは何かを持っていることを知っている(またはそれがsqlmigrateているのですか?...イム混乱し)。ブームのテーブルを作成している間、私はあなたが私が何を意味するか知っていれば:)

+1

これはruby-on-railsとmongo/mysqlとは何が関係していますか?あなたは実際にdjangoの移行がどのように動作するかを学ぶためにdjangoチュートリアルを行うべきです – Sayse

+0

彼らはSOによって提案されました。私はシステムを無視したくない... –

答えて

2

まず、データベースのバックアップを作成します。開発マシンにコピーします。それを試してみてください。そうすれば何らかの理由で「ブーム」になっても問題はありません。行うには

最初の事は

python manage.py showmigrations 

これは、すべての既存の移行を示しており、それあるは、彼らが[X]で適用されていることを示す必要があります。

その後、

python manage.py makemigrations 

は、あなたの新しいモデル(名前00004 _...)のための新しい移行ファイルを作成します。

そして、それを適用する

python manage.py migrate 

を行います。元に戻すには、移行状態00003に戻ります。

python manage.py migrate <yourappname> 00003 
+0

--listオプションは、このような便利なツールです!それをうまく説明するためにあなたの忍耐力に感謝します。 –

+0

もしかするとちょっとばかげた質問... をどうやって見つけるのですか?いくつかの設定/設定ファイルにありますか? –

+0

これは、models.pyが入っているディレクトリの名前です。settings.pyのINSTALLED_APPS設定にリストされているはずです。移行--listはまた、移行をアプリケーション名でグループ化します。 – RemcoGerlich

2

My question is now how do I "create" this boom table using the migration script and the boom model?

./manage.py makemigrations 

I am worried that I might accidentally disrupt anything that is already in DB.

移行の全体のポイントを、「それはdoesnのことであるデータベースがブームに行きたくありませんhttps://docs.djangoproject.com/en/1.10/topics/migrations/

:トン詳細について

I know that it has something to do with manage.py and running migrate or runmigration

はを参照してください。

あなたのデータベースは盛り上がることはありません! :-)

+0

答えをありがとう。私はRTFMをしましたが、悲しいことにそれは銀色の弾丸ではありません:)私たちの中には他の人たちと同様にそれを得られない人もいます。そうでなければ私のおばあちゃんはそれらを読んでいるコーダーになるでしょう... –

+1

そのための@Sayse – e4c5

+0

申し訳ありません、私の答えの最後の部分を変更しました。うまくいけば、あなたはまだおばあちゃんから良いコーダーを作ることができます:-) – e4c5

2

Djangoでの移行には2つの手順があります。

./manage.py makemigrations 

は、表示されるマイグレーションファイルを作成します。これらのファイルには、データベースに加える必要がある変更が記述されます。

また、このマイグレーションを適用し、実際に、実際のデータベース構造を変更するにはSQLでALTER TABLEコマンドを実行します

./manage.py migrate 

を実行する必要があります。

一般的に、フィールドやテーブルを追加しても、データベース内の他の項目には影響しません。既存のフィールドを変更または削除すると、データに影響を与える可能性があるので、さらに注意してください。

あなたはdevのマシン上で変更を行い、一度幸せな移行ファイルをコミットし、本番環境にリリースすることができるように、2つのステップのための理由があります。次に、本番マシンでmigrateコマンドを実行して、本番データベースを開発マシンと同じ状態にします(データベースが同じものであることを前提として、本番環境での作業は必要ありません)。

+0

ありがとうございます。あなたは素敵だ。これはまさに私が望んでいたものです - 正確でよく説明されています。私は1回以上+1することができたらいい! –

+0

あなたは答えを受け入れることができる.... .... –

+0

私は待っているので、そうだ:) –