Что я должен использовать вместо syncdb в Django 1.9?
Взгляните на это:
$ 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
?
Ответы
Ответ 1
syncdb
устарел из-за системы миграции, представленной с django 1.7.
Теперь вы можете отслеживать свои изменения, используя makemigrations
. Это превращает ваши изменения модели в код python, чтобы сделать их доступными для развертывания в других базах данных. Когда у вас есть дополнительные изменения, которые необходимо применить к базе данных, вы можете использовать миграцию данных.
После создания миграций вы должны применить их: migrate
.
Поэтому вместо использования syncdb
вы должны использовать makemigrations
, а затем migrate
.
Рабочий процесс разработки после того, как вы что-то изменили в своих моделях:
./manage.py makemigrations
./manage.py migrate
И на вашей производственной системе:
./manage.py migrate
Бонус: вам не нужно запускать migrate
для каждого изменения. Если у вас несколько изменений, которые не применяются, django будет запускать их в правильном порядке для вас.
Ответ 2
Вы должны обязательно использовать систему миграции. Это позволяет отслеживать изменения в 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.
Ответ 3
Вы должны использовать команды makemigrations
и migrate
, которые были введены в django 1.7
https://docs.djangoproject.com/en/1.7/topics/migrations/
Ответ 4
syncdb
имеет некоторые проблемы с миграцией db. поэтому после введения django 1.7 makemigrations
и migrate
.
Теперь в django 1.9 syncdb
устарели.
попробовать
1. python manage.py makemigrations
, который обнаруживает изменения в db и создает один файл .py
как внутри папки миграций
2. python manage.py migrate
применит миграцию к базе данных