Нужно ли мне звонить syncdb до или после миграции на юг
Я новичок в South, поэтому мне интересно, нужно ли мне когда-либо звонить
./manage.py syncdb
или делать
./manage.py schemamigration appname --auto
./manage.py migrate appname
достаточно во всех случаях которые South может обрабатывать самостоятельно.
Ответы
Ответ 1
Юг не является проектом. Это приложение широко.
Некоторые приложения используют юг, некоторые приложения не используют его.
если приложение интегрировано на юг, чтобы выполнить изменения db, вы будете использовать
./manage.py schemamigration appname --auto
./manage.py migrate appname
но не все приложения интегрированы с югом.
Когда вы добавляете новое приложение, которое не использует юг для вашего проекта, вам необходимо вызвать ./manage.py syncdb
для этих приложений. (Например, django.contrib
apps)
Короче говоря, используйте ./manage.py syncdb
, когда приложение не использует юг, а ./manage.py migrate
для южного интегрированного.
Ответ 2
При создании или установке нового приложения MyApp вы должны сначала выполнить следующие команды:
./manage.py schemamigration MyApp --inital
./manage.py migrate MyApp
После этого всякий раз, когда вы выполняете ./manage.py syncdb
, вы увидите:
Syncing...
Creating tables ...
Installing custom SQL ...
Installing indexes ...
Installed 0 object(s) from 0 fixture(s)
Synced:
> south
> django.contrib.auth
> django.contrib.contenttypes
> django.contrib.sessions
> django.contrib.sites
> django.contrib.messages
> django.contrib.staticfiles
> django.contrib.admin
> django.contrib.admindocs
Not synced (use migrations):
- MyApp
(use ./manage.py migrate to migrate these)
Вы можете видеть, что manage.py syncdb
может различать приложения, управляемые югом (Not synced
), и те, которые не управляются югом (Synced
). Он также напоминает вам использовать ./manage.py migrate
.
важная точка - это позволить Югу управлять новым приложением, выполняя ./manage.py schemamigration MyApp --inital
и ./manage.py migrate MyApp
до выполнение ./manage.py syncdb
.