web-dev-qa-db-ja.com

Django 1.9でsyncdbの代わりに何を使うべきですか?

これを見てください:

$ pypy ./manage.py syncdb
/usr/lib64/pypy-2.4.0/site-packages/Django/core/management/commands/syncdb.py:24: RemovedInDjango19Warning: The syncdb command will be removed in Django 1.9
  warnings.warn("The syncdb command will be removed in Django 1.9", RemovedInDjango19Warning)

(cut)

クイックGoogle検索 を実行しましたが、答えが見つかりませんでした-syncdbの代わりに何を使用すればよいですか?

66
d33tah

syncdbは、 Django 1.7 で導入された 移行システム により非推奨です。

これで、makemigrationsを使用して、変更をtrackできます。これにより、モデルの変更がpythonコードに変換され、別のデータベースにデプロイ可能になります。データベースにさらに変更を加える必要がある場合は、 data migrations を使用できます。

移行を作成したら、applyする必要があります:migrate

したがって、syncdbを使用する代わりに、makemigrationsを使用してからmigrateを使用する必要があります。

モデルで何かを変更した後の開発のワークフロー:

./manage.py makemigrations
./manage.py migrate

本番システムでは:

./manage.py migrate

ボーナス:変更ごとにmigrateを実行する必要はありません。まだ適用されていない複数の変更がある場合、Djangoはそれらを正しい順序で実行します。

85
tjati

必ず 移行システム を使用してください。これにより、models.pyの変更を追跡し、データベースの移行を作成できます。移行システムは、コマンド makemigrations を使用して移行を作成し、 migrate を使用してデータベースを移行します。

何らかの理由でsyncdbと同じ方法でデータベースを作成する必要がある場合は、migrateが同じように機能するコマンドフラグがあります。あなたが本当にそれを必要とし、あなたが何をしているかを知っている場合にのみ、これを行うべきです。たとえば、選択した継続的インテグレーションシステムのために空のデータベースを作成します。

python manage.py migrate auth
# performs migrations for auth and contenttypes contrib apps

python manage.py migrate --run-syncdb
# creates the rest of the database

Django 1.9.1でテスト済み。

50
Don Mums

Django 1.7で導入されたmakemigrationsおよびmigrateコマンドを使用する必要があります

https://docs.djangoproject.com/en/1.7/topics/migrations/

9
dizballanze

syncdbには、データベースの移行に問題があります。そのため、Django 1.7 makemigrationsおよびmigrateが導入された後。 Django 1.9 syncdbでは廃止されました。試してみる
1。 python manage.py makemigrations dbの変更を検出し、移行フォルダー2内に.pyファイルを1つ作成します。python manage.py migrateはデータベースに移行を適用します

3
Amrendra